八度:我如何矢量化这个功能?

时间:2018-01-16 03:11:52

标签: matlab loops vectorization octave

这个函数的for循环可以被矢量化吗?

function [sta]=bootstrap(data,N,p)
rand('state', sum(100*clock));
n=length(data);
n1=round(prctile(1:n,(100-p)/2));
n2=round(prctile(1:n,p/2+50));
for i=1:N
    choose=round(((n-1)*rand(1,n))+1);
    for j=n1:n2
        sample(j-n1+1,1)=data(choose(j));
    end
sta(i)=mean(sample);
end

1 个答案:

答案 0 :(得分:0)

是的,您可以尝试使用以下代码替换您的循环:

choose=round(((n-1)*rand(N,n))+1); sample(:,(n1:n2)-n1+1,1)=data(choose(:,n1:n2)); sta=mean(sample');

关键是您应该将ij替换为您在for区块中为其指定的向量。