长矢量的有效迭代

Bil*_*ean 0 matlab loops vector

我有一个长向量,包含> 100万个条目,根据概率密度函数(高斯)分布.我只需要正值,这些我在下面的MWE中找到

N = 1.5e6;
vals = normrnd(0, 1, N, 1);

final = [];
for i=1:length(vals)
    if(vals(i)>0)
        final = [final vals(i)];
    end
end
Run Code Online (Sandbox Code Playgroud)

问题是这需要很长时间.在MatLAB中有更聪明的方法吗?

谢谢,奈尔斯.

jer*_*rad 6

您可以在matlab中删除没有for循环的负数:

vals = normrnd(0, 1, N, 1);
vals(vals<0) = [];
Run Code Online (Sandbox Code Playgroud)