matlab加速,matlab源码:预分配空间,向量化运算,并行计算

matlab加速:分配空间+向量化运算

clc;clear;
%% 分配空间 + 向量化
mysize=1000;
A=rand(mysize);

fprintf('不分配空间+for循环:');
tic;Accelerate1(A);toc;

fprintf('分配空间+for循环:')
tic;Accelerate2(A);toc;

fprintf('分配空间+向量化操作:')
tic;Accelerate3(A);toc;

function Accelerate1(A)
    for i = 1:size(A,1)
        for j = 1:size(A,2)

            if A(i,j)>0.5
                B(i,j)=A(i,j);
            else
                B(i,j)=-A(i,j);
            end

        end
    end
end

function Accelerate2(A)
    B=A*0;                             %%%%%%%%%%重点:分配空间

    for i = 1:size(A,1)
        for j = 1:size(A,2)

            if A(i,j)>0.5
                B(i,j)=A(i,j);
            else
                B(i,j)=-A(i,j);
            end

        end
    end
end

function Accelerate3(A)
    B=A*0;                             %%%%%%%%%%重点:分配空间

    Index=A<0.5;                       %%%%%%%%%%重点:向量化操作
    B(Index)=-A(Index);
end

在这里插入图片描述

matlab加速:并行计算

%% 并行运算
clc;clear;
mysize=1000;
A=rand(mysize);

parpool();%打开并行计算
fprintf('并行计算:')
tic;Accelerate5(A);toc;

delete(gcp)
fprintf('非并行计算:')
tic;Accelerate4(A);toc;

function Accelerate4(A)
    for i = 1:50     
        X=eig(A);
    end
end

function Accelerate5(A)
    parfor i = 1:50
        X=eig(A);
    end
end

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值