1-7是以下代码用到的函数
beita是关于alfa的函数,gama是关于beita的函数,theta是关于i和beita的函数
其余的I0和n均为常量
代码如下
clear;clc;
I0=1;
n=1.362;
alfa=0:0.01:pi/2;
i=0:0.01:pi/2;
%% 一次折射
beita=asin(sin(alfa)./n);
I1=(I0/2).*(((2.*cos(alfa))./(n.*cos(alfa)+cos(beita))).^2+((2.*cos(alfa))./(cos(alfa)+n.*cos(beita))).^2);
%% 二次折射------虹
gama=asin(cos(beita)./n);
I2=(I1/2).*(((2.*n.*sin(beita))./(n.*sin(beita)+cos(gama))).^2+((2.*n.*sin(beita))./(sin(beita)+n.*cos(gama))).^2);
subplot(121)
plot(alfa,I2)
grid on
xlabel('入射角')
ylabel('虹--光强')
xticks([0,pi/6,pi/4,pi/3,pi/2]);
xticklabels({'0','\pi/6','\pi/4','\pi/3','\pi/2'});
%% 二次反射
I3=(I1/2).*(((sin(beita)-n.*cos(gama))./(sin(beita)+n.*cos(gama))).^2+((n.*sin(beita)-cos(gama))./(n.*sin(beita)+cos(gama))).^2);
%% 三次折射------霓
theta=asin(n.*sin(i+beita));
I4=(I3/2).*(((2.*n.*(-cos(i+beita)))./(n.*cos(theta)-cos(i+beita))).^2+((2.*n.*(-cos(i+beita)))./(cos(theta)-n.*cos(i+beita))).^2);
subplot(122)
[alfa,i]=meshgrid(alfa,i);
%[beita,gama]=meshgrid(beita,gama);
%[theta]=meshgrid(theta);
meshc(alfa,i,I4)
grid on
xlabel('入射角')
ylabel('斜面偏角')
zlabel('霓--光强')
xticks([0,pi/6,pi/4,pi/3,pi/2]);
xticklabels({'0','\pi/6','\pi/4','\pi/3','\pi/2'});
yticks([0,pi/6,pi/4,pi/3,pi/2]);
yticklabels({'0','\pi/6','\pi/4','\pi/3','\pi/2'});
我的目的是用mesh函数生成图像
遇到的问题是:变量alfa和i都是多行和多列了,但是生成图像时显示多行多列错误
我将代码分为四部分,前三部分没有涉及i变量,前三部分都是成功的
第四部分引入i变量之后就显示了这样的错误
我不太清楚哪部分代码出现了问题
ballball了!!!!!