c***n 发帖数: 223 | 1 1. 用matlab尽量避开for loop
2. 能事先知道结果的大小,最好先分配内存。动态分配内存特别慢,尤其是后来数组
大了之后。
3. 可以把找到的sample的index写进vector,而不是数据本身。
% find values that are larger than 0.8 from a 10000x1 vector of Gaussian %
random numbers
fakeData = randn(10000, 1);
collectedIdx = [];
for idx = 1:numel(fakeData)
if fakeData(idx) > 0.8
collectedIdx = [collectedIdx, idx];
end
end
collectedData = fakeData(collectedIdx);
当然最快的方法是用slicing,一行搞定:
collectedData = fakeData(fakeData>0.8);
loop |
|