当前位置: 首页 > 工具软件 > Subs > 使用案例 >

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

钱宇
2023-12-01

下午碰到一段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函数耗时很大,在对效率有较高要求时不宜采用。

 类似资料: