matlab中subs怎么用,【转】MATLAB中subs函数效率低

下午碰到一段MATLAB程序运行缓慢,怀疑是因为使用了subs函数而导致的,写了段测试代码:

clc;

clear;

syms x1 x2 x3 x4 y1 y2 y3 y4;

V1=1;V2=2;V3=3;V4=4;

V5=5;V6=6;V7=7;V8=8;

M1=[x1 x2;x3 x4];

M2=[y1 y2;y3 y4];

M=M1+M2;

tic;

for i=1:1:1000

Mv=subs(M,{x1,x2,x3,x4,y1,y2,y3,y4},{V1,V2,V3,V4,V5,V6,V7,V8});

end

t1=toc;

N1=[V1 V2;V3 V4];

N2=[V5 V6;V7 V8];

tic;

for j=1:1:1000

Nv=calcSums(N1,N2);

end

t2=toc;

disp(['采用subs函数的运行时间为',num2str(t1),'秒;']);

disp(['采用自定义求和函数的运行时间为',num2str(t2),'秒;']);

disp(['t1是t2的',num2str(fix(t1/t2)),'倍。']);

其中自定义的求和函数calcSums为:

function result=calcSums(Mat1,Mat2)

result=Mat1+Mat2;

end

引用地址:

注意: 该地址仅在今日23:59:59之前有效

下午碰到一段MATLAB程序运行缓慢,怀疑是因为使用了subs函数而导致的,写了段测试代码:

clc;

clear;

syms x1 x2 x3 x4 y1 y2 y3 y4;

V1=1;V2=2;V3=3;V4=4;

V5=5;V6=6;V7=7;V8=8;

M1=[x1 x2;x3 x4];

M2=[y1 y2;y3 y4];

M=M1+M2;

tic;

for i=1:1:1000

Mv=subs(M,{x1,x2,x3,x4,y1,y2,y3,y4},{V1,V2,V3,V4,V5,V6,V7,V8});

end

t1=toc;

N1=[V1 V2;V3 V4];

N2=[V5 V6;V7 V8];

tic;

for j=1:1:1000

Nv=calcSums(N1,N2);

end

t2=toc;

disp(['采用subs函数的运行时间为',num2str(t1),'秒;']);

disp(['采用自定义求和函数的运行时间为',num2str(t2),'秒;']);

disp(['t1是t2的',num2str(fix(t1/t2)),'倍。']);

其中自定义的求和函数calcSums为:

function result=calcSums(Mat1,Mat2)

result=Mat1+Mat2;

end

循环1000次时的运行结果:

采用subs函数的运行时间为29.7846秒;

采用自定义求和函数的运行时间为0.17605秒;

t1是t2的1761倍。

subs函数耗时很大,在对效率有较高要求时不宜采用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值