找回密码
 注册
关于网站域名变更的通知
查看: 381|回复: 2
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
通过改变num的值计算不同层数的值,需要记忆前一个值% I1 f& i9 M! C. K- N

0 r/ _2 E2 f  m4 f' \( d4 _理论上不管num 为几 第一个值不会变的
$ a3 b3 v( U0 q" b但是3 l' m1 ^" m7 |$ {
num = 1 时得到第一个值
( q9 Z$ Y" F! [; b: t
; P" C5 w2 c7 p0 @num = 2时得到两个值 但是,第一个值和前面num=1的值不一样是怎么回事
0 ~, ~* S+ ]$ c            
" |: M8 `- V( o8 o/ x1 y; Y3 H0 G, h: [1 r; R& r9 I
各位大大帮忙看下,不然睡不成觉了
3 @" T. S7 ]$ b/ J- w4 b' ^1 c部分程序如下num = 2; %设置层数
. n( J3 k/ g0 C1 C5 L( }
3 ?6 h- n0 {. d- x6 ?7 z2 N1 |
        g=linspace(1,2.4,200);
% G: B7 e: c+ @7 Q
        for x=g
/ ]5 o4 U' b+ ^, \/ T4 H9 Z
                %循环镶嵌处# ]' a, }  R/ C* l% J
            for len =1:1:num  %len为厚度
) @8 D2 g" b0 t, q' x
                F1=2*pi*na*d1*cos(c2)/x;
2 M" ^: y, Z+ A  E; M: a  E
                M1=[cos(F1),i*sin(F1)/p1;i*p1*sin(F1),cos(F1)];% _5 i9 c7 U: y* V' F8 i
) R8 k6 `' B( I
                d2 = d2 - 0.005*(len-1);% 厚度& [5 I( o# n: l7 T, \6 ?# ?2 C
$ z) @2 k# z  \. M, o
                F2{len,1}=2*pi*nb*d2*cos(c3)/x; %第len层 角度
) [( K9 b; [. o* {  A9 B$ }  `
                M2{len,1}=[cos(F2{len,1}),i*sin(F2{len,1})/p2;i*p2*sin(F2{len,1}),cos(F2{len,1})]; %len层 矩阵表示3 u4 z$ K$ u. O
; Q5 R- A6 }2 w! r+ z+ {2 }( K0 i
                temp{len,1} = M1 * M2{len,1}; % 矩阵A 乘 矩阵 B(len)  得到num个 A B 相乘的矩阵* V" ]6 U1 k5 S, R) s2 R# {7 ~
                result = [1,0;0,1]; %初值为单位矩阵
, d  a  I  ?1 u) i. P+ U
                result = result * temp{len,1};%得到中间所有矩阵的乘积
9 f# K& j+ W4 e
          end
# j9 u5 g6 r; w0 p' b* `+ W" L

1 _, G7 L+ K& \5 `8 f
; K# \) b$ x9 x& _

- R: F8 X6 X/ x+ ~+ v6 [( N- @
" T& ~5 C9 m- p2 J5 d& g6 J

该用户从未签到

2#
发表于 2023-2-8 14:57 | 只看该作者
你的M2{len,1}是由F2{len,1}计算出来的,而6 q! b* E9 _) p! [
F2{len,1}=2*pi*nb*d2*cos(c3)/x;
7 u9 D* N! D8 h9 w& w你应该分析F2在num发生变化时状况,例如你这里的d2,在num不同时
7 N  a0 s9 C3 |: ]2 ^d2 = d2 - 0.005*(len-1);" K' X1 S' D# O" v1 A1 l5 ]) {2 N
恐怕d2得到的值也会不一样,另外还有你没有给出的nb和c3
/ A. Y# s% s9 I; S6 M' s0 M这些都要你一步步分析的,而不是盯着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:576 B& C! ?& H; y& F  w
你的M2{len,1}是由F2{len,1}计算出来的,而" C7 n: ]7 [: y+ b! P; r) G  ~1 I2 r) y
F2{len,1}=2*pi*nb*d2*cos(c3)/x;5 q0 d7 e4 E$ }# f' \
你应该分析F2在num发生变化 ...

5 `' S" B5 E4 H找到个错误 就是 result = [1,0;0,1]; 初值应该在第一个循环里面第二个循环外面8 m9 }3 _1 Q& u
具体不知道哪儿错了 变的就只有d2 从而试F2 M2 变化其余都是已知的
5 b- u" y+ _0 t: u3 }% T! `  Q) |
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-9 21:29 , Processed in 0.093750 second(s), 27 queries , Gzip On.

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

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

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