MATLAB for循环的改善方法

MATLAB for循环的改善方法

前段时间做了大数据仿真计算,计算了百万个样本,其中采用了for循环结构,居然花费了半天的时间才运行完,那么如何改善这个循环体使它能花费更短的时间来运行。我采用了将for循环改变成多维向量计算的方法。
测试代码(截取)如下:

for step=1:100
	sigma=0;
	data_f1=[];
data_f2=[];
data_f=[];
for i=1:m;
        if ((i>=(step+1))&(i<=m-step))
            for j=-step:step
                sigma=sigma+(csv(i-j,3)-1)^2;
            end
              f1=(sigma./(2*step)).^0.5;  
data_f1=[data_f1;f1];
             sigma=0;
        else
            f2=abs(csv(i,3)-1);
            data_f2=[data_f2;f2];
            end
        data_f=[data_f2(1:step,:);data_f1;data_f2((step+1):(2*step),:)];
         [P1_fi,p]=corr(csv(1:m,1),data_f);
	data_corr=[data_corr;P1_fi];
end

我们看到,在这个结构中,为了计算样本在定义公式下的值,包含有3个for循环嵌套结构和一个if条件语句,尽管工作重复但是在上百万个样本下Matlab运行速度还是非常慢的。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值