作业帮 > 综合 > 作业

matlab关于矩阵中加入变量的问题

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/24 14:20:28
matlab关于矩阵中加入变量的问题
clear;
R=5;
Z=2*pi*R;
Omega=0:10;
Lambda=300;
c=3*10^8;
Phi=4*pi*R*Z*Omega/(Lambda*c);
T=[1 0;0 exp(1i*Phi)];
Error using ==> vertcat
CAT arguments dimensions are not consistent.
matlab关于矩阵中加入变量的问题
exp(1i*Phi)应该是一个数组吧?把它放在一个矩阵中当作一个元素肯定是不行的.
再问: 我想把Phi中的Omega弄成0到10之间的变量,应该怎么改呢
再答: 你可以看看matlab的运行结果的,现在Omega就是0到10之间的变量,Phi也是一个有十一个元素的数组。不知道你这个是要做什么。
再问: 问题是我程序的一部分,想在T矩阵中加入一个变量 clear; R=5; Z=2*pi*R; Omega=0:10; Lambda=300; Beta=1; z=2; c=3*10^8; Phi1=5; Phi=4*pi*R*Z*Omega/(Lambda*c); T1=exp(1i*Beta*z)*[sqrt(1/2) 1i*sqrt(1/2);1i*sqrt(1/2) sqrt(1/2)]; T2=exp(1i*Phi1)*[1 0;0 exp(1i*Phi)]; B=[1;0]; A=T1*(T2*(T1*B)); E1=A(1,1); E2=A(2,1); plot(Lambda,E1,Lambda,E2);
再答: 其实我是不明白你这个程序是要做什么,T2的值是什么?是包含有是一个二阶矩阵的元胞数组吗?要是的话,你应该用for循环来处理T2。你给我全部的程序我也看不懂你这个要做什么,呵呵。只是看得出来你T2里面那么用Phi是不对的。
再问: 其实我不太会matlab,T2不用矩阵表示也能做,老师非要用矩阵表示。 我想知道矩阵中的元素可以是一个含有变量的函数么,如果可以应该怎么表示呢。我知道exp(1i*Phi)是一个数组,要是把它变成一个含有变量Omega的函数应该怎么写?
再答: 可以用for循环,for m=0:10 T2(m)=exp(1i*Phi(m))*[1 0;0 exp(1i*Phi(m))]; end 这样就可以把所有的T2都表示出来啊。
再问: 为啥改成这样还出错呢? 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);
再答: 应该改为下面这样 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=[1 0;0 exp(1i*Phi(g))]; B=[1;0]; A=T1*T2*T1*B; E1=A(1,1); E2=A(2,1); P1=E1^2; P2=E2^2; end 这样就可以运行了,每次求出一个P1,P2,可以把作图放到循环里面,这样画出十幅图。 还有一种改法是改为元胞数组,改法如下: 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; E=A{1,g}; E1=E(1,1); E2=E(2,1); P1(g)=E1^2; P2(g)=E2^2; end 这样可以求出十个P1,P2,可以使用循环做图。 你自己看看就明白你那个为什么不行了。
再问: 如果把T2(g)和A(g)改成T2和A,在matlab的工作空间里T2和A只保留了for循环的最后一个值啊。
再答: 那你就只能用元胞数组做了,你好好看看元胞数组怎么用的。