由买买提看人间百态

topics

全部话题 - 话题: fakedata
(共0页)
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
(共0页)