我想让一个MATLAB数组填充一个数字,增量为0.001.我正在使用大约200,000,000行的数组,因此希望使用最有效的方法.我考虑过使用以下代码:
for i = 1 : size(array,1)
array(i,1) = i * 0.001;
end
Run Code Online (Sandbox Code Playgroud)
必须有一种更有效的方法来做这件事.
小智 9
那么接受的答案非常接近于快速但不够快.你应该使用:
s=size(array,1);
step=0.0001;
array(:,1)=[step:step:s*step];
Run Code Online (Sandbox Code Playgroud)
接受的答案有两个问题
这是一个比较(抱歉,我正在运行32位matlab)
array=rand(10000);
s=size(array,1);
step=0.0001;
tic
for i=1:100000
array(:,1)=[step:step:s*step];
end
toc
Run Code Online (Sandbox Code Playgroud)
和
tic
for i=1:100000
array(:, 1)=[1:s]'*step;
end
toc
Run Code Online (Sandbox Code Playgroud)
结果是:
经过的时间是3.469108秒.
经过的时间是5.304436秒.
并且没有在第二个例子中进行转置
经过的时间是3.524345秒.
我认为在你的情况下情况会更糟.
| 归档时间: |
|
| 查看次数: |
29920 次 |
| 最近记录: |