[討論] for迴圈

看板MATLAB作者 (kenshui)時間11年前 (2014/03/12 00:57), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
板上的大家好,我的程式碼如下: X=0.1; C=(16/X)+1; d1=zeros(1,C); d2=zeros(1,C); d3=zeros(1,C); e1=zeros(1,C); e2=zeros(1,C); e3=zeros(1,C); f1=zeros(7,C); f2=zeros(7,C); f3=zeros(7,C); for k=1:C k; x1=0; x2=0; x3=0; x4=0; x5=0; x6=0; x7=0; for I=0:4 I; A=zeros(7,7); K=0.1*k-8.1; K; A(1,1)=(0.5*(K-3*pi)^2+0.5)+(1-0.3i)*(x1*conj(x1)+2*x2*conj(x2)+2*x3*conj(x3)+2*x4*conj(x4)+2*x5*conj(x5)+2*x6*conj(x6)+2*x7*conj(x7)); A(1,2)=(-0.25+(1-0.3i)*(x2*conj(x3)+x3*conj(x4)+x4*conj(x5)+x5*conj(x6)+x6*conj(x7))); A(1,3)=(1-0.3i)*(x2*conj(x4)+x3*conj(x5)+x4*conj(x6)+x5*conj(x7)); A(1,4)=(1-0.3i)*(x2*conj(x5)+x3*conj(x6)+x4*conj(x7)); A(1,5)=(1-0.3i)*(x2*conj(x6)+x3*conj(x7)); A(1,6)=(1-0.3i)*(x2*conj(x7)); A(1,7)=0; A(2,1)=(-0.25+(1-0.3i)*(x3*conj(x2)+x4*conj(x3)+x5*conj(x4)+x6*conj(x5)+x7*conj(x6))); A(2,2)=(0.5*(K-2*pi)^2+0.5)+(1-0.3i)*(2*x1*conj(x1)+x2*conj(x2)+2*x3*conj(x3)+2*x4*conj(x4)+2*x5*conj(x5)+2*x6*conj(x6)+2*x7*conj(x7)); A(2,3)=-0.25+(1-0.3i)*(x1*conj(x2)+x3*conj(x4)+x4*conj(x5)+x5*conj(x6)+x6*conj(x7)); A(2,4)=(1-0.3i)*(x1*conj(x3)+x3*conj(x5)+x4*conj(x6)+x5*conj(x7)); A(2,5)=(1-0.3i)*(x1*conj(x4)+x3*conj(x6)+x4*conj(x7)); A(2,6)=(1-0.3i)*(x1*conj(x5)+x3*conj(x7)); A(2,7)=(1-0.3i)*(x1*conj(x6)); A(3,1)=(1-0.3i)*(x4*conj(x2)+x5*conj(x3)+x6*conj(x4)+x7*conj(x5)); A(3,2)=-0.25+(1-0.3i)*(x2*conj(x7)+x4*conj(x3)+x5*conj(x4)+x6*conj(x5)+x7*conj(x6)); A(3,3)=(0.5*(K-pi)^2+0.5)+(1-0.3i)*(2*x1*conj(x1)+2*x2*conj(x2)+x3*conj(x3)+2*x4*conj(x4)+2*x5*conj(x5)+2*x6*conj(x6)+2*x7*conj(x7)); A(3,4)=-0.25+(1-0.3i)*(x1*conj(x2)+x4*conj(x5)+x2*conj(x3)+x6*conj(x7)+x5*conj(x6)); A(3,5)=(1-0.3i)*(x1*conj(x3)+x5*conj(x7)+x4*conj(x6)+x2*conj(x4)); A(3,6)=(1-0.3i)*(x1*conj(x4)+x4*conj(x7)+x2*conj(x5)); A(3,7)=(1-0.3i)*(x2*conj(x6)+x1*conj(x5)); A(4,1)=(1-0.3i)*(x5*conj(x2)+x6*conj(x3)+x7*conj(x4)); A(4,2)=(1-0.3i)*(x3*conj(x1)+x5*conj(x3)+x6*conj(x4)+x7*conj(x5)); A(4,3)=-0.25+(1-0.3i)*(x2*conj(x1)+x3*conj(x2)+x5*conj(x4)+x6*conj(x5)+x7*conj(x6)); A(4,4)=(0.5*(K)^2+0.5)+(1-0.3i)*(2*x1*conj(x1)+2*x2*conj(x2)+2*x3*conj(x3)+x4*conj(x4)+2*x5*conj(x5)+2*x6*conj(x6)+2*x7*conj(x7)); A(4,5)=-0.25+(1-0.3i)*(x1*conj(x2)+x2*conj(x3)+x3*conj(x4)+x5*conj(x6)+x6*conj(x7)); A(4,6)=(1-0.3i)*(x1*conj(x3)+x2*conj(x4)+x3*conj(x5)+x5*conj(x7)); A(4,7)=(1-0.3i)*(x1*conj(x4)+x2*conj(x5)+x3*conj(x6)); A(5,1)=(1-0.3i)*(x6*conj(x2)+x7*conj(x3)); A(5,2)=(1-0.3i)*(x4*conj(x1)+x6*conj(x3)+x7*conj(x4)); A(5,3)=(1-0.3i)*(x3*conj(x1)+x4*conj(x2)+x6*conj(x4)+x7*conj(x5)); A(5,4)=-0.25+(1-0.3i)*(x2*conj(x1)+x3*conj(x2)+x4*conj(x3)+x6*conj(x5)+x7*conj(x6)); A(5,5)=(0.5*(K+pi)^2+0.5)+(1-0.3i)*(2*x1*conj(x1)+2*x2*conj(x2)+2*x3*conj(x3)+2*x4*conj(x4)+x5*conj(x5)+2*x6*conj(x6)+2*x7*conj(x7)); A(5,6)=-0.25+(1-0.3i)*(x1*conj(x2)+x2*conj(x3)+x3*conj(x4)+x4*conj(x5)+x6*conj(x7)); A(5,7)=(1-0.3i)*(x1*conj(x3)+x2*conj(x4)+x3*conj(x5)+x4*conj(x6)); A(6,1)=(1-0.3i)*(x7*conj(x2)); A(6,2)=(1-0.3i)*(x5*conj(x1)+x7*conj(x3)); A(6,3)=(1-0.3i)*(x4*conj(x1)+x5*conj(x2)+x7*conj(x4)); A(6,4)=(1-0.3i)*(x3*conj(x1)+x4*conj(x2)+x5*conj(x3)+x7*conj(x5)); A(6,5)=-0.25+(1-0.3i)*(x2*conj(x1)+x3*conj(x2)+x4*conj(x3)+x5*conj(x4)+x7*conj(x6)); A(6,6)=(0.5*(K+2*pi)^2+0.5)+(1-0.3i)*(2*x1*conj(x1)+2*x2*conj(x2)+2*x3*conj(x3)+2*x4*conj(x4)+2*x5*conj(x5)+x6*conj(x6)+2*x7*conj(x7)); A(6,7)=-0.25+(1-0.3i)*(x1*conj(x2)+x2*conj(x3)+x3*conj(x4)+x4*conj(x5)+x5*conj(x6)); A(7,1)=0; A(7,2)=(1-0.3i)*(x6*conj(x1)); A(7,3)=(1-0.3i)*(x5*conj(x1)+x6*conj(x2)); A(7,4)=(1-0.3i)*(x4*conj(x1)+x5*conj(x2)+x6*conj(x3)); A(7,5)=(1-0.3i)*(x3*conj(x1)+x4*conj(x2)+x5*conj(x3)+x6*conj(x4)); A(7,6)=-0.25+(1-0.3i)*(x2*conj(x1)+x3*conj(x2)+x4*conj(x3)+x5*conj(x4)+x6*conj(x5)); A(7,7)=(0.5*(K+3*pi)^2+0.5)+(1-0.3i)*(2*x1*conj(x1)+2*x2*conj(x2)+2*x3*conj(x3)+2*x4*conj(x4)+2*x5*conj(x5)+2*x6*conj(x6)+x7*conj(x7)); [ve, ei]=eig(A); S=zeros(1,7); for w=1:1:7; for v=1:1:7; for u=1:1:7; S=S+A(v,u)* ve(u,w) *conj(A(v,u)* ve(u,w)); end end end S; w=1:1:7; S(w)=S; sorted = sort(S); m1=sorted(1); m2=sorted(2); m3=sorted(3); index1=find(S<=m1); index2=find(m1<S<=m2); index3=find(m2<S<=m3); ei(:,index1); ei(:,index2); ei(:,index3); alpha1=ei(1,index1); alpha2=ei(2,index1); alpha3=ei(3,index1); alpha4=ei(4,index1); alpha5=ei(5,index1); alpha6=ei(6,index1); alpha7=ei(7,index1); alpha=alpha1+alpha2+alpha3+alpha4+alpha5+alpha6+alpha7; s1=real(alpha); t1=-imag(alpha); ve(:,index1); x1=ve(1,index1); x2=ve(2,index1); x3=ve(3,index1); x4=ve(4,index1); x5=ve(5,index1); x6=ve(6,index1); x7=ve(7,index1); d1(k)=s1; e1(k)=t1; 程式顯示的錯誤說明為: In an assignment A(I) = B, the number of elements in B and I must be the same. Error in Untitled d1(k)=s1; 請板上的高手幫這個剛學沒多久的小弟我解惑,小弟感激不盡,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.249.100.52

03/12 04:00, , 1F
你的s1跟t1最後分別是行向量跟列向量
03/12 04:00, 1F

03/12 04:03, , 2F
03/12 04:03, 2F

03/12 11:57, , 3F
了解了,非常謝謝:)
03/12 11:57, 3F

03/12 13:28, , 4F
都用matlab了,何苦自己用迴圈跑矩陣乘法呢?
03/12 13:28, 4F
文章代碼(AID): #1J7q1dNk (MATLAB)
文章代碼(AID): #1J7q1dNk (MATLAB)