找回密码
 注册
查看: 373|回复: 2
打印 上一主题 下一主题

循环问题,两次循环不一致

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-2-8 13:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
通过改变num的值计算不同层数的值,需要记忆前一个值
0 U* q2 ?$ n+ {  H
8 _# E6 B- {' c1 q" R1 Y4 R理论上不管num 为几 第一个值不会变的1 b5 M9 L( x; l6 q0 h
但是
2 X. j# Z; v) ]; pnum = 1 时得到第一个值 , D+ b+ J; g9 D( q0 N: L

. y9 {" y6 O/ ~  J) s$ f1 snum = 2时得到两个值 但是,第一个值和前面num=1的值不一样是怎么回事
8 p6 @& {( n* q$ Z  _+ A& w            
" b4 [8 [. V2 [+ z5 P
& B$ t, R7 }" |1 R各位大大帮忙看下,不然睡不成觉了
( C. Y5 K6 N/ a* }部分程序如下num = 2; %设置层数
7 m$ A$ S9 u6 C. |  I. g" H/ y2 {# N; P0 s  |: D( T
        g=linspace(1,2.4,200);; v# p6 a1 i6 B% `# S
        for x=g3 `. z6 q: z8 v
                %循环镶嵌处" e/ h8 o5 u, _& N. c2 h
            for len =1:1:num  %len为厚度
) Y# L7 W. L$ u) Q) v
                F1=2*pi*na*d1*cos(c2)/x;. }( Q" p; k3 Y' Y0 W1 L
                M1=[cos(F1),i*sin(F1)/p1;i*p1*sin(F1),cos(F1)];
# n' K, A; g& k2 p: U4 i$ B
, M, M1 L" Q- {& F. X  G; Z
                d2 = d2 - 0.005*(len-1);% 厚度( D- {# X( l% p
: P: q5 I! b0 @- C/ [3 S; r6 z
                F2{len,1}=2*pi*nb*d2*cos(c3)/x; %第len层 角度: f1 ]% g8 `* C* X
                M2{len,1}=[cos(F2{len,1}),i*sin(F2{len,1})/p2;i*p2*sin(F2{len,1}),cos(F2{len,1})]; %len层 矩阵表示! W0 Y9 m+ n( ^; g. ^9 {
" H0 t/ o7 Y; U0 B
                temp{len,1} = M1 * M2{len,1}; % 矩阵A 乘 矩阵 B(len)  得到num个 A B 相乘的矩阵3 n# k0 v! L& v% D* V0 `1 g4 E
                result = [1,0;0,1]; %初值为单位矩阵) I: {8 \4 A& W' p/ g
                result = result * temp{len,1};%得到中间所有矩阵的乘积% P7 ~" ]4 p: R% ~, O; g% s! |
          end, Q2 y& [  O1 N( q" D' U# O8 m

9 ?; P( Y+ @' p2 C# R% S
! L0 m- k6 t) q& P; \

% W5 ^& K- _9 w  e2 Q/ B  T9 V+ m* s, L/ ?- w- v- g  m7 N

该用户从未签到

2#
发表于 2023-2-8 14:57 | 只看该作者
你的M2{len,1}是由F2{len,1}计算出来的,而7 w' o! |2 p, F7 m5 [! N1 F
F2{len,1}=2*pi*nb*d2*cos(c3)/x;
/ s. z+ s" ~0 [) \你应该分析F2在num发生变化时状况,例如你这里的d2,在num不同时2 @' r! N4 Y. S3 t
d2 = d2 - 0.005*(len-1);
& c8 I1 x! d( E* p! l恐怕d2得到的值也会不一样,另外还有你没有给出的nb和c3& B, Z# d2 |% E5 f4 L" I
这些都要你一步步分析的,而不是盯着M2奇怪就能解决问题的

点评

找到个错误 就是 result = [1,0;0,1]; 初值应该在第一个循环里面第二个循环外面 具体不知道哪儿错了 变的就只有d2 从而试F2 M2 变化其余都是已知的  详情 回复 发表于 2023-2-8 15:10

该用户从未签到

3#
 楼主| 发表于 2023-2-8 15:10 | 只看该作者
Tdongxue 发表于 2023-2-8 14:57
+ \# v% @+ U* u# N! G( L7 U你的M2{len,1}是由F2{len,1}计算出来的,而2 z* g) p, U9 i& o6 z, w
F2{len,1}=2*pi*nb*d2*cos(c3)/x;' v3 O2 N% Z; s6 ?3 W# i
你应该分析F2在num发生变化 ...

5 R) i- q* {2 f: N, M1 f- u3 V找到个错误 就是 result = [1,0;0,1]; 初值应该在第一个循环里面第二个循环外面/ x: q! a, h5 J4 b0 E
具体不知道哪儿错了 变的就只有d2 从而试F2 M2 变化其余都是已知的
. W# Q. j. G; T
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-5-24 03:26 , Processed in 0.093750 second(s), 30 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表