tiger1986ren 发表于 2009-10-5 16:38

求助: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);

不胜感激!!!!!

tiger1986ren 发表于 2009-10-5 16:57

我现在弄不清楚的是,用for循环能将 R的值全部输出来,但我不知道怎样也能用for循环把R一个一个保存下来,画图!恳请大虾帮帮忙,谢谢!

ChaChing 发表于 2009-10-5 22:12

个人水平专业有限, 真的搅不清楚LZ问什麽!

mao 发表于 2009-10-5 23:03

你不能把MATLAB报错的信息也一起发上来给大家看吗?
服了你,我只好一行一行地看,发现问题应该是你那个myjuzhen子程序有错误,如下:
若x(1,:)是1*N维的向量,则delta1及delta2均为1*N维的向量,M1与M2均为2*(2N)的矩阵,那么你接下来的一个语句:M0=M1*M2就明显错了,两个一样维数的矩阵能这样相乘,行与列的维数不等啊,只有N=1才不会报错呢。

ChaChing 发表于 2009-10-6 00:02

猜测楼主可能是要一个ramuda值求一个R !?
for loop函数myjuzhen即可
页: [1]
查看完整版本: 求助:matlab程序出错,恳请大虾们帮我看下!!!急