作业帮 > 英语 > 作业

matlab中出现?In an assignment A(I) = B,the number of elements i

来源:学生作业帮 编辑:神马作文网作业帮 分类:英语作业 时间:2024/11/10 16:49:18
matlab中出现?In an assignment A(I) = B,the number of elements in B and I must be the same.
clear;
R=5;
Z=2*pi*R;
Lambda=300;
c=3*10^8;
Omega=1:10;
for g=1:length(Omega)
Phi(g)=4*pi*R*Z*Omega(g)/(Lambda*c);
T1=[sqrt(1/2) 1i*sqrt(1/2);1i*sqrt(1/2) sqrt(1/2)];
T2(g)=[1 0;0 exp(1i*Phi(g))];
B=[1;0];
A(g)=T1*T2(g)*T1*B;
E1=A(1,1);
E2=A(2,1);
P1=E1^2;
P2=E2^2;
end
plot(Lambda,P1,Lambda,P2);
title('角速度与输出功率的关系');
xlabel('角速度');
ylabel('输出功率');
matlab中出现?In an assignment A(I) = B,the number of elements i
不明白你最后的plot是什么目的,肯定是画不出东西的,不过你提出的错误主要由于这里:T2(g)=[1 0;0 exp(1i*Phi(g))]; T2若是一个矩阵,就不能加(g)成为集合的集合,何况T2、A只是作为中间变量,没有必要带序号.完全可以用中间变量代替,全码小改动:
clear;
R=5;
Z=2*pi*R;
Lambda=300;
c=3*10^8;
Omega=1:10;
l=length(Omega);
for g=1:l %length(Omega)
x=4*pi*R*Z*Omega(g)/(Lambda*c); %Phi(g)=4*pi*R*Z*Omega(g)/(Lambda*c);
y=exp(1i*x);
T1=[sqrt(1/2) 1i*sqrt(1/2);1i*sqrt(1/2) sqrt(1/2)];
T2=[1 0;0 y]; %T2(g)=[1 0;0 exp(1i*Phi(g))];
B=[1;0];
A=T1*T2*T1*B; % A(g)=T1*T2(g)*T1*B;
E1=A(1,1);
E2=A(2,1);
P1=E1^2;
P2=E2^2;
end
plot(Lambda,P1,Lambda,P2);
title('角速度与输出功率的关系');
xlabel('角速度');
ylabel('输出功率');
%%最后plot命令不是这么用,也不明白你的意思,还要在改动才能画出你要的东西.问题解决.
再问: 我的plot写错了 应该是plot(Omega,P1,Omega,P2); 如果把T2(g)和A(g)改成T2和A,在matlab的工作空间里T2和A只保留了for循环的最后一个值啊。