声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 910|回复: 4

[编程技巧] 求助:matlab程序出错,恳请大虾们帮我看下!!!急

[复制链接]
发表于 2009-10-5 16:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我用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=[cos(delta1) (i/n1)*sin(delta1);i*n1*sin(delta1) cos(delta1)];
    M2=[cos(delta2) (i/n2)*sin(delta2);i*n2*sin(delta2) cos(delta2)];
    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);

不胜感激!!!!!
回复
分享到:

使用道具 举报

 楼主| 发表于 2009-10-5 16:57 | 显示全部楼层
我现在弄不清楚的是,用for循环能将 R的值全部输出来,但我不知道怎样也能用for循环把R一个一个保存下来,画图!恳请大虾帮帮忙,谢谢!
发表于 2009-10-5 22:12 | 显示全部楼层
个人水平专业有限, 真的搅不清楚LZ问什麽!
发表于 2009-10-5 23:03 | 显示全部楼层
你不能把MATLAB报错的信息也一起发上来给大家看吗?
服了你,我只好一行一行地看,发现问题应该是你那个myjuzhen子程序有错误,如下:
若x(1,:)是1*N维的向量,则delta1及delta2均为1*N维的向量,M1与M2均为2*(2N)的矩阵,那么你接下来的一个语句:M0=M1*M2就明显错了,两个一样维数的矩阵能这样相乘,行与列的维数不等啊,只有N=1才不会报错呢。

评分

1

查看全部评分

发表于 2009-10-6 00:02 | 显示全部楼层
猜测楼主可能是要一个ramuda值求一个R !?
for loop函数myjuzhen即可
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 23:57 , Processed in 0.053573 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表