【发布时间】:2018-05-19 01:32:21
【问题描述】:
我有一个巨大的矩阵。我刚刚给出了一个大小为(1*1000000). 的矩阵示例
我使用简单的Loop(我不喜欢使用Loop)来查找k。
k= k(ii)=(abs(a(ii+1)-2*a(ii)+a(ii-1)))/(a(ii+1)+2*a(ii)+a(ii-1))
但是,这对于小矩阵来说很好。如果我有大量数据需要很长时间。有没有什么办法可以使用vector代替Loop来查找k?
clear;
clc;
a=rand(1,1000000);
for ii=2:size(a,2)-1
k(ii)=(abs(a(ii+1)-2*a(ii)+a(ii-1)))/(a(ii+1)+2*a(ii)+a(ii-1));
end
【问题讨论】:
-
如果你预先分配
k你的循环会快很多。 mathworks.com/help/matlab/matlab_prog/preallocating-arrays.html -
在 MATLAB 中使用循环没有任何问题。他们曾经很慢,但现在已经不是这样了。
-
@Cris Luengo。谢谢