MATLAB小技巧


數組添加新元素, 類似python的append

A = ones(1, 3);
B = 3;
A = [A, B];    % 注意 A, B之間的維度關系

將一個數組的元素打亂

a = a(randperm(length(a)));

MATLAB查找數組最小的n個數的原下標

A = rand(1, 10);        % 示例A
[vle, idx] = sort(A);    % sort和max一樣, 返回[值, 索引].
n = 4;
res = idx(1:n);

保留n位小數

1.結尾為0, 如:

roundn(12.3456, -2)    %   負整數, 截於小數點后2位12.3500
roundn(12.3456, 1)    %    正整數, 於小數點前1位截, 結果: 10

2.結尾無數, 如:

n = 4;
vpa(123.45, n)        % 保留n位小數, 結果: 123.4

MATLAB使用不當時的一大耗時點

MATLAB之前經常給出波浪線提示"變量XX可能會隨迭代次數而改變。請預分配內存以獲得更高的運算速度", 常常不以為意, 今天吃大虧了, 10個小時處理了40張圖。。。

一個例子

random_points = rand(50000, 2);
%% C語言式->_->
tic
t_cell = cell(size(random_points, 1), 1);
for i = 1 : size(random_points, 1)
    t_cell{i} = {random_points(i, :)};
end
toc
% 時間已過 0.156488 秒。

%% Python式<-_<-
tic
t_cell = {};
for i = 1 : size(random_points, 1)
    t_cell = [t_cell; random_points(i, :)];
end
toc
% 時間已過 33.253046 秒。

耗時大相徑庭, 效率可見一斑.
盡管人生苦短我用Python, 但以后在MATLAB這方面還是要嚴格要求自己的, 算法效率盡量在初步寫成的時候就考慮優化, 至少要把可以改進的優化點記下, 不然最后都拋之腦后, 傻等電腦慢跑.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM