matlab 中如何把矩阵对应成一个有颜色的网格?

想用一个 N×N 网格的颜色深浅,来对应表达 N 阶矩阵中数值的大小。
现在矩阵中数字全部是非负数。要求(1)数字零用空白表示;(2)正数用红色表示,而且数字越大,颜色越深。

谢谢指教!

p = 

[0.2920 0.5625 0.2009 0.4740 0.9561 0.3756 0.7694 0.4906 ;

0.8580 0.6166 0.2731 0.9090 0.5955 0.1662 0.4442 0.4093 ;

0.3358 0.1133 0.6262 0.5962 0.0287 0 0.6206 0.4635 ;

0.6802 0 0.5369 0.3290 0.8121 0.8386 0.9517 0.6109 ;

0.0534 0.7546 0.0595 0.4782 0.6101 0.4516 0.6400 0.0712 ;

0.3567 0.7911 0 0.5972 0.7015 0.9566 0.2473 0.3143 ;

0.4983 0.8150 0.2713 0.1614 0.0922 0.1472 0.3527 0.6084 ;

0.4344 0.6700 0.4091 0.8295 0.4249 0.8699 0 0.1750 ;]

gridcolor(p) 

运行结果: 

自定义函数gridcolor

function gridcolor(p)

[m n] = size(p);

p = round(1+127*p/max(p(1:end)));

p = flipud(p);

x = 0:m-1;

y = 0:n-1;

[X,Y] = meshgrid(x,y);

hmap = [ones(127,1) linspace(0.5,0,127)' zeros(127,1)];

hmap = [[1 1 1];hmap];

for i = 1:m

    for j = 1:n

        subfun(i, j, X(i,j),Y(i,j),hmap(p(i,j), :));

    end  

end

function subfun(m,n,x0,y0,c)

x = [x0 x0;x0 x0+1;x0+1 x0+1];

y = [y0-1 y0-1;y0 y0-1;y0 y0];

z = [1 1;1 1;1 1];

tcolor(1,1,1:3) = c;

tcolor(1,2,1:3) = c;

h = patch(x,y,z,tcolor);

set(h,'EdgeColor','none');

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-06
N=5;A=13*rand(N);%这个地方我随便生成了一个网格A
c=[0:255]';
h=ones(256,1);
s=(c/255<=.5).*c/255*2+(c/255.5>.5);
v=(c/255<=.5)+(c/255>.5).*(2-c/255*2);
colormap(hsv2rgb([h,s,v]));
image(255*A/(max(A(:))+eps));

可以用Matlab画出黑白网格吗?麻烦前辈给出具体程序?
程序代码如下:通过设置row and col的大小改变矩阵的大小,每一个矩阵元素为16*16的块,每个元素之间用绿色隔开以便看的更清晰 function web()row=50;col=50;b=floor(rand(row,col)*4);bb=zeros(row*17+1,col*17+1,3);bb(:,:,3)=255;for i=1:row for j=1:col bb((i-1)*17+2:...

matlab如何生成网格图像?
这样,`X`和`Y`矩阵中的每一对元素都对应了一个网格点的x坐标和y坐标。有了网格点的坐标矩阵后,就可以使用`surf`、`mesh`等函数来绘制三维图形了。例如,可以使用`Z = X.^2 + Y.^2`生成一个高度矩阵`Z`,然后使用`surf`绘制一个三维曲面图。这样,就可以通过`meshgrid`函数和MATLAB的三维...

MATLAB怎么把一个矩阵输出为一张彩色图?颜色深浅代表元素值得大小。_百 ...
A=[0.8 0.1 0.50.2 0.4 0.70.5 0.3 0.6]imagesc(A);colormap jetcolorbar

MATLAB实现矩阵里数值的大小对应颜色的深浅
直接用 imagesc(a)就可以 如果想像图中那样用黑白灰度表示,再加一句 colormap(gray(256))xy是坐标,z为对应计算出来的值,matlab生成二维图,用颜色表示数值的大小,什么函数能实现求举例?感觉你可以绘制出三维图去surf,设置不显示网格线,然后设置视角为俯视,再加上colorbar应该就能达到你的要求。f...

能不能用matlab在画伪彩色图时,画成网格的,这里面不同的颜色代表不同...
MATLAB 有一个叫颜色映象 的数据结构来代表颜色值。颜色映象定义为一个有三列和若干行的矩阵。利用 0 到 1 之间的数,矩阵的每一行都代表了一种色彩。任一行的数字都指定了一个 RGB 值,即红、黄、蓝三种颜色的强度,形成一种特定的颜色。一些有代表性的 RGB 值在下表中给出。Red(红) Gree...

怎样用MATLAB编程,读入一张图片中的结构数据,判断每个单元网格的...
第一是,假设这是一张rgb的图,你用a=imread('a.jpg','jpg')打开,并用imshow(a)或者Image(a)打开,可以利用figure窗口中的取点工具获得每一种颜色的rgb值,在纸上记下来。然后建立一个与a同大小的矩阵m,对矩阵a进行搜索,其中a(i,j,1),a(i,j,2),a(i,j,3)分别对应某个像素点的...

如何在matlab中进行图像的网格划分。
在matlab中可以这样描述这个坐标矩阵:把各个点的x坐标独立出来,得:3,4,5;3,4,5;3,4,5;3,4,5;再把各个点的y坐标也独立出来:9,9,9;8,8,8;7,7,7;6,6,6;这样对应的x、y结合,便表示了上面的坐标矩阵。meshgrid就是产生这样两个矩阵,来简化我们的操作。然后根据(x, y)计算获得z...

如何用matlab将矩阵中的数字变颜色
matlab读取之后是一个RGB三原色组成的三维矩阵,现在需要将图中黑、绿、黄、红(图上有两种红色需要视作一种)四种颜色的像素点分别以0,0.01,1和2来表示,希望得到像素点的二维矩阵,维数等于分辨率,求具体实现的代码 望采纳

一个已知矩阵(温度场数据),怎样用MATLAB绘制网格,要求每个节点对应矩 ...
figure(1);i = 1:10;j = 1:10;[x, y] = meshgrid(i,j);[C, H] = contour(x, y, T(i, j));%等高线绘制,T(x,y)等值线 clabel(C,H);xlabel('x', 'FontSize', 14);title( '模拟等温线图', 'FontSize', 18);...

matlab三维曲线图函数mesh用法?
2. mesh函数的使用方法 使用mesh函数时,通常需要提供三个输入参数:X轴方向的网格坐标矩阵、Y轴方向的网格坐标矩阵以及对应的Z值矩阵。这些矩阵定义了三维空间中的网格点,mesh函数将这些点连接起来形成曲面。语法形式大致为:`mesh`。其中X、Y和Z可以是向量、矩阵或者函数表达式。3. mesh函数的参数设置...

相似回答