求助:matlab程序出错,恳请大虾们帮我看下!!!急
我用matlab编了一个程序,目的很简单,就是先求出矩阵M中的四个矩阵元M11,M12,M21,M22,然后求出反射系数R,自变量是波长ramuda,现在的问题是我的R不随着ramuda改变,程序最后只有一个R值,请大虾帮忙看看,小弟新手,程序可能有点乱!恳请赐教,急!clc;clear all
global sita n1 n2 a b n
sita=0;n1=1.46;n2=2.35;a=0.00000015;b=0.00000015;n=4;
H=ones(2,91);
ramuda=0.0000001:0.00000001:0.000001;
H(1,:)=ramuda;
R=myjuzhen(H);
disp(R);
figure(1);
plot(R(1,:),R(2,:));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=myjuzhen(x)
global sita n1 n2 a b n
y=ones(2,91);
y(1,:)=x(1,:);
delta1=(2.*3.142./x(1,:)).*n1.*a;
delta2=(2.*3.142./x(1,:)).*n2.*b;
M1=;
M2=;
M0=M1*M2;
M=(M0)^n;
y(2,:)=((M(1,1)-M(2,2))^2+(M(1,2)-M(2,1))^2)/((M(1,1)+M(2,2))^2+(M(1,2)+M(2,1))^2);
不胜感激!!!!! 我现在弄不清楚的是,用for循环能将 R的值全部输出来,但我不知道怎样也能用for循环把R一个一个保存下来,画图!恳请大虾帮帮忙,谢谢! 个人水平专业有限, 真的搅不清楚LZ问什麽! 你不能把MATLAB报错的信息也一起发上来给大家看吗?
服了你,我只好一行一行地看,发现问题应该是你那个myjuzhen子程序有错误,如下:
若x(1,:)是1*N维的向量,则delta1及delta2均为1*N维的向量,M1与M2均为2*(2N)的矩阵,那么你接下来的一个语句:M0=M1*M2就明显错了,两个一样维数的矩阵能这样相乘,行与列的维数不等啊,只有N=1才不会报错呢。 猜测楼主可能是要一个ramuda值求一个R !?
for loop函数myjuzhen即可
页:
[1]