用于标量的二维彩色地图-Matlab
我在模拟波浪在时间和地点上的传播。我想在空间中为每个时间步的值制作一个彩色贴图。我的意思是,我想制作一个两个轴(x和y)的图形,并用颜色显示这些点上的波浪值(波浪变量为V)。 我怎么做? 我试过:用于标量的二维彩色地图-Matlab,matlab,2d,colormap,Matlab,2d,Colormap,我在模拟波浪在时间和地点上的传播。我想在空间中为每个时间步的值制作一个彩色贴图。我的意思是,我想制作一个两个轴(x和y)的图形,并用颜色显示这些点上的波浪值(波浪变量为V)。 我怎么做? 我试过: for ind1 = 1:length(t) figure() trisurf(x1,y1,V(:,ind1),'EdgeColor', 'None', 'facecolor', 'interp'); view(2); end 但是我得到一个信息,z(=V)假设是一个函数,而不是一个标量。 有什么建
for ind1 = 1:length(t)
figure()
trisurf(x1,y1,V(:,ind1),'EdgeColor', 'None', 'facecolor', 'interp');
view(2);
end
但是我得到一个信息,z(=V)假设是一个函数,而不是一个标量。
有什么建议吗?我有两个选择,我认为它们并不完美,但可能会有所帮助 首先,将数据插值到矩形网格上,并使用
contourf
:
F=scatteredInterp(x,y,V(:,ind1));
X=linspace(min(x),max(x));
Y=linspace(min(y),max(y));
contourf(X,Y,F(X,Y))
其次,使用散射
绘制具有不同颜色的点:
scatter(x,y,25,V(:,ind1))
当25控制每个标记的大小时,您可能需要对其进行试验
希望这能给你一些想法。我做了一个循环,最终成功:
clear heart_movie
Vnorm = mat2gray(V(:,1:2000));
x1_new = x1-min(x1)+1;
y1_new = y1-min(y1)+1;
for ind1 = 1:2000
heart = zeros(max(x1_new),max(y1_new));
z = Vnorm(:,ind1);
for ind2 = 1:length(z);
heart(y1_new(ind2),x1_new(ind2))= z(ind2);
end
colormap(jet);
imagesc(flipud(heart));
end
如果您使用
contourf
?我会检查一下,然后告诉你!谢谢没那么好用。也许是不同的语法?有更多的建议吗?取决于你的数据是什么样的。你能举一个小例子说明你的问题吗。例如,只需创建适当大小的随机矩阵作为数据。我无法从问题的描述中理解你想要什么,对不起,好的!我一开始就做了一个叫dts的delaunay三角测量。因此,我有一个包含两个字段的结构:元素和点。我写了一个动作电位传播的算法,取决于时间和空间。每一步,我计算每一点的电势(V)。现在,对于每一个我想要创建一个彩色贴图的步骤,它显示每个点上的潜在值。我得到了826点,假设迭代次数为100次。V尺寸为826X100,x尺寸为826X1,y尺寸为826X1。