EDA365电子论坛网

标题: matlab仿真中一个运行错误 [打印本页]

作者: abc66    时间: 2022-9-13 15:05
标题: matlab仿真中一个运行错误
在仿真中,首先进行求出反解,然后运行如下程序:, x) w7 Q! S+ B: ^( ~, z! J" G* [
n=50;rou=300;lamt=2*pi;
# |& K8 z/ B. f2 |% AZz=[300 400 500];7 @7 E  }* Q7 I1 r2 S# u
Rou=rou*(0:n)/n;/ G3 C/ m  `- R" N: f) P0 o/ j
Lamt=lamt*(0:n)/n;% z7 \4 B0 i( O' O
[Rou1 Lamt1]=meshgrid(Rou,Lamt);
$ |  I0 n0 D0 TXx=Rou1.*cos(Lamt1);
, O/ ~  A' |6 ~" [. KYy=Rou1.*sin(Lamt1);& i( x! X8 z& [9 v! P
fai1=subs(faii,b,bb);
" h9 \4 T5 b9 V3 Gfor i=1:3
4 D0 K& {! p1 D  u, r# qz=Zz(i);, r# F$ E6 W) Q# e! I
for j=0:n: P6 u0 L7 P  {/ \- L
for k=0:n
: J4 z! Y3 _0 Kx=Xx(j+1,k+1);* w+ t  u) g% B2 Q6 R$ q
y=Yy(j+1,k+1);/ a3 T+ A2 s2 g- S# T- H
sita1=double(subs(sita,{rx,rz},{x,z}));0 U8 R! Q7 c% d' w5 e
c21=cos(sita1);+ p: F+ ]# Q3 k0 d5 \
s21=sin(sita1);/ q$ x5 `9 g& n, f) j
fai2=double(subs(fai1,{rx,ry,rz,s2,c2},{x,y,z,s21,c21}));
$ N) K, j4 e' {$ rc31=cos(fai2);
' ~9 S- {$ C+ H6 ns31=sin(fai2);
, X( G3 R/ J' s2 j) [* ]gang2{i,j+1,k+1}=subs(gang1,{rx,ry,rz,s2,c2,s3,c3},{x,y,z,s21,c21,s31,c31});
$ U2 P& V. I+ t- s; q3 Wend$ H- v& @. G/ t8 {4 y) d
end
8 w0 h; |! S& \* B* w- Hend" R5 r0 S  _0 B- w& U
  F! n4 c, X+ i4 A/ L
根据以上程序的计算结果,运行如下程序:1 k; m! ~) v" w& }1 `- Q
for i=1:3
2 |, ^0 q1 r3 y  L- {5 k; qfor j=0:n7 d5 ^  B8 Y. b0 h- Z; h
for k=0:n" E2 o3 W3 z& C2 R1 X
gang11=eigs(gang2{i,j+1,k+1});+ l5 U# J. J+ S/ L
gang12(j+1,k+1,i)=gang11(6)/gang11(1);( v3 W1 p: b! J# ?: D1 X
end* f5 V! ]5 e9 {! z; m
end
0 g, e: z$ Y6 B. F3 Ofigure(i)
1 R6 Z8 ~! X3 M5 d* tgang12=double(gang12);6 }& M0 @2 v& t- ?4 n7 u  G: d+ `
mesh(Xx,Yy,gang12(:,:,i))
$ }6 t; B2 |; ^* Z0 W" Y4 xend/ V2 w( S( K5 {/ A- H6 {) e

6 K/ n1 \: J: ^& P9 G) m( F该程序应该是绘制出三个图形,但是绘制一个图形以后就出现错误,错误如下:3 d4 k# a" d4 c7 g& s+ V, b/ j* Z
??? Attempted to access gang11(6); index out of bounds because numel(gang11)=0.3 Y6 L4 V5 o) x: v; g, }
6 X& h- M9 Q; g5 h6 e+ ~" R4 p
Error in ==> gangdutu at 5
3 W; b; _5 X! t- H5 {0 k; P0 m$ \gang12(j+1,k+1,i)=gang11(6)/gang11(1);
$ `: K2 Y; u3 j, L! R0 t
作者: Jame33    时间: 2022-9-13 15:39
你的gang11是一个值,而不是一个向量,所以调用gang11(6)和gang(11)有误,超出了范围。应把上面一句 gang11=eigs(gang2{i,j+1,k+1});改为 gang11(k)=eigs(gang2{i,j+1,k+1});此处gang11的长度是多少就要有你自己看情况决定了。5 l0 `; M4 S1 H  X+ p& P1 s

作者: oewqe    时间: 2022-9-13 16:53
再看看别人是怎么说的
& |7 C# v( r6 k& ]* ?) ?
作者: EDA_Mr_PENG    时间: 2022-9-13 20:59
3 h, ^0 W7 i; _) }
你的gang11是一个值,而不是一个向量,所以调用gang11(6)和gang(11)有误,超出了范围。应把上面一句 gang11=eigs(gang2{i,j+1,k+1});改为 gang11(k)=eigs(gang2{i,j+1,k+1});此处gang11的长度是多少就要有你自己看情况决定了




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2