在Matlab中绘制二维彩色地图的问题

时间:2016-09-20 00:13:39

标签: matlab matrix plot colormap

我是一名尝试做项目的Matlab初学者。

我想绘制一个二维颜色图,变量Et1in作为x和z的函数(如x和z是地图的坐标,Et1in是颜色代表的颜色),我有问题绘图,问题用以下代码证明:

这里我为x,z创建一个meshgrid,以便稍后使用surf函数绘制颜色贴图

[x,z] = meshgrid(0:100:600,0:100:600);
mm = size(z);

所以我要绘制的函数(Et1in)实际上是2×1矩阵Et1left的第一个元素,计算如下(kzia,GammaT1,Rs1,Ts1 ......只是先前定义的常量):

M1 = [1/Ts1,Rs1/Ts1;Rs1/Ts1,1/Ts1];                       
P1 = [exp(1i*delta1),0; 0,exp(-1i*delta1)];                
M2 = [1/Ts2,Rs2/Ts2;Rs2/Ts2,1/Ts2];

Et1in = zeros(7,7)
for z2 = 3:mm(1)
    for x2 = 3:mm(1)
        Et1left = inv(P1)*[exp(-1i*kzia*z(z2));GammaT1*exp(-1i*kzia*z(z2))];
        Et1in = Et1left(1,1)*exp(-1i*kxia*x(x2));
    end
end

并绘制颜色贴图,我用过:

Eplot = zeros(size(x)) + real(Et1in)

figure;
surf(x,z,Eplot,'EdgeColor','None');
view(2);
xlabel('x','fontsize',20);
ylabel('z','fontsize',20);
colormap jet;

所以问题是, Et1left 是通过乘以2乘2矩阵来计算的:

(inv(P1)) 

使用2 x 1矩阵:

[exp(-1i*kzia*z(z2));GammaT1*exp(-1i*kzia*z(z2))], 

其中x和z是2乘1矩阵分量中的变量。

所以如果我不使用for循环,那么Matlab会返回错误,表示矩阵维度不一致,因为x和z是meshgrid,这意味着维度矩阵:

[exp(-1i*kzia*z(z2));GammaT1*exp(-1i*kzia*z(z2))]

不再是2乘1,因为x和z是由meshgrid函数创建的矩阵。

如果我确实使用for循环,那么我绘制的函数在任何地方都是相同的值,因为在Matlab中Et1的值会为for循环生成的每个新值覆盖Et1in的值,所以绘制的地图只是循环生成的最后一个值。

1 个答案:

答案 0 :(得分:0)

我理解你是否想要在循环中保持git ack的值?

如果有,请更改

Et1in

Et1in = Et1left(1,1)*exp(-1i*kxia*x(x2));