matlab一秒做一次循环,求助:Matlab程序为什么只作一次循环

该篇博客探讨了使用符号计算技术求解电路问题,通过L和I数组计算Tcd和Tzhi矩阵,涉及递归调用和符号表达式处理。在求解过程中遇到矩阵维度超出的问题,引发错误。博主试图理解为何循环限制在两次,并寻求解决方案。
摘要由CSDN通过智能技术生成

L=[0.0762 0.1778 0.1542 0.0508  0.0508 0.0508 0.1524 0.0508];

I=[2.6367e-9 2.6367e-9 2.6367e-9 2.6367e-9 2.6367e-9 2.1935e-9 2.1935e-9 2.1935e-9];

E=2.068e11;

Ip=[0.0859 0.0678 0.0429 0.0271];Id=[0.04295 0.0339 0.02145 0.01355];

m=[0.0571 10.7023 0.2499 0.1538 7.0869  0.0385 0.04699 7.202 3.692 0.04699];

k=100;j=1;

for p=32:0.2:70

for i=1:4

g(i)=(Ip(i)-Id(i))*p*p;

end

Tcd_01=Tcd(L(1),E,I(1));Tcd_01=sym(Tcd_01);

Tcd_02=Tcd(L(2),E,I(2));Tcd_02=sym(Tcd_02);

Tcd_03=Tcd(L(3),E,I(3));Tcd_03=sym(Tcd_03);

Tcd_04=Tcd(L(4),E,I(4));Tcd_04=sym(Tcd_04);

Tcd_05=Tcd(L(5),E,I(5));Tcd_05=sym(Tcd_05);

Tcd_06=Tcd(L(6),E,I(6));Tcd_06=sym(Tcd_06);

Tcd_07=Tcd(L(7),E,I(7));Tcd_07=sym(Tcd_07);

Tcd_08=Tcd(L(8),E,I(8));Tcd_08=sym(Tcd_08);

Tzhi_03=[1 0 0 0;0 1 0 0;0 0 1 0;m(3)*p*p 0 0 1];Tzhi_03=sym(Tzhi_03);

Tzhi_04=[1 0 0 0;0 1 0 0;0 0 1 0;m(4)*p*p 0 0 1];Tzhi_04=sym(Tzhi_04);

Tzhi_06=[1 0 0 0;0 1 0 0;0 0 1 0;m(6)*p*p 0 0 1],Tzhi_06=sym(Tzhi_06),   为方便检查 此处用了,号

Tzhi_10=[1 0 0 0;0 1 0 0;0 0 1 0;m(10)*p*p 0 0 1];Tzhi_10=sym(Tzhi_10);

Tpan_01=[1 0 0 0;0 1 0 0;0 g(1) 1 0;m(2)*p*p 0 0 1];Tpan_01=sym(Tpan_01);

Tpan_02=[1 0 0 0;0 1 0 0;0 g(2) 1 0;m(5)*p*p 0 0 1];Tpan_02=sym(Tpan_02);

Tpan_03=[1 0 0 0;0 1 0 0;0 g(3) 1 0;m(8)*p*p 0 0 1];Tpan_03=sym(Tpan_03);

Tpan_04=[1 0 0 0;0 1 0 0;0 g(4) 1 0;m(9)*p*p 0 0 1];Tpan_04=sym(Tpan_04);

z=zeros(4,20);z=sym(z);

syms o_1 o_2 r x_0;

z(:,1)=[1 o_1 0 0];

z(:,2)=[1 o_1 0 m(1)*p^2-k];

z(:,3)=Tcd_01*z(:,2);

z(:,4)=Tpan_01*z(:,3);

z(:,5)=Tcd_02*z(:,4);

z(:,6)=Tzhi_03*z(:,5);

z(:,7)=Tcd_03*z(:,6);

z(:,8)=Tzhi_04*z(:,7);

z(:,13)=[x_0 o_2 0 0];

z(:,14)=[x_0 o_2 0 m(7)*p^2-k];

z(:,15)=Tcd_06*z(:,14);

z(:,16)=Tpan_03*z(:,15);

z(:,17)=Tcd_07*z(:,16);

z(:,18)=Tpan_04*z(:,17);

z(:,19)=Tcd_08*z(:,18);

e=z(:,19);b=solve(e(3),'x_0');y=subs(e,x_0,b);

z(:,19)=y;

z(:,20)=Tzhi_10*z(:,19);

f=z(1,20)-z(1,8);b=solve(f,'o_2');z(4,20)=subs(f,o_2,b);

z(4,8)=z(4,8)+z(4,20);

z(:,9)=Tcd_04*z(:,8);

z(:,10)=Tpan_02*z(:,9);

z(:,11)=Tcd_05*z(:,10);

z(:,12)=[1 0 0 0;0 1 0 0;0 0 1 0;-k 0 0 1]*Tzhi_06*z(:,11);

m=[sym2poly(z(3,12));sym2poly(z(4,12))];

h=-det(m);

h=double(h);

if h>-500&&h<500

w(j)=p;j=j+1;

end;

end

另外有个子函数不写了,

运行出现症状是

Tzhi_06 =

1.0000         0         0         0

0    1.0000         0         0

0         0    1.0000         0

39.4240         0         0    1.0000

Tzhi_06 =

[        1,        0,        0,        0]

[        0,        1,        0,        0]

[        0,        0,        1,        0]

[ 4928/125,        0,        0,        1]

??? Index exceeds matrix dimensions.

Error in ==> CDJZ2gang at 23

Tzhi_06=[1 0 0 0;0 1 0 0;0 0 1 0;m(6)*p*p 0 0 1],Tzhi_06=sym(Tzhi_06),

为什么只能循环2次啊??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值