matlab怎样将数据变化和颜色变化对应,求助各位大神

clear;clc;A=unifrnd(-.5,.5,10,10);B=100*[A,0*A(:,1);0*A(1,:),0][m,n]=meshgrid(1:11);s... clear;clc;
A=unifrnd(-.5,.5,10,10);
B=100*[A,0*A(:,1);0*A(1,:),0]
[m,n]=meshgrid(1:11);
surf(m,n,0*m,B,'linestyle',':');
%%%%%%%%%自定义颜色%%%%%%%%%%%
map=ones(199,3);
c=linspace(0,1)';
map(1:100,[2,3])=[c,c];
map(199:-1:100,[1,3])=[c,c];
colormap(map);
colorbar([-50,50]);
%%%%%%%%%%%%%%%%%%%%%%%%%%
view(2);axis ij
axis([1,11,1,11])
set(gca,'xtick',1.5:10.5,'xticklabel',char('A'+(0:9)'),'ytick',1.5:10.5,'yticklabel',{-39.3,-29.6,-17.7,-10.5,-2.4,8.7,14.9,27,37,44})
[m,n]=meshgrid(1.5:10.5);
%%%%%%%%显示百分比%%%%%%%%%%%%
text(m(:),n(:),cellfun(@(x)[num2str(x),'%'],num2cell(round(A(:)*100)),'UniformOutput',false),'HorizontalAlignment','center','color','b')
这是有位大神编的代码。出来的图如下

我现在想请教各位,哪个命令是将数据和颜色对应?另外这个命令在matlab7中可以出来如图,但在2012b中出来是三维的,而且不能显示百分比和colorbar。求教各位了。我现在想了解他的命令后把自己的矩阵画成这样。
另外还有surf这个函数和pcolor函数画这个都能画出来么?有什么不同可以介绍一下吗?
展开
 我来答
yesyes科
2020-04-07 · TA获得超过2.6万个赞
知道答主
回答量:608
采纳率:0%
帮助的人:10.1万
展开全部

1、启动Matlab,在home菜单下打开“preference”首选项界面,该界面可以对常见的默认设置进行修改。

2、选择“Fonts->Custom”自定义界面,该界面可以自定义命令窗口、命令历史窗口、编辑窗口等的字体格式和大小。

3、在如图所示的位置,选择自己感兴趣的窗口,然后选择“Custom”选项,对字体格式和大小进行更改。

4、选择“Preference->Colors”选项,注意不要选择Colors选项下面的“Programming Tools”,该项是对编程过程中产生的变量、程序名的颜色进行设置。

5、在右侧对话框中,勾掉“Use system colors”,然后分别针对字体颜色、六个语法颜色(keywords, comments,strings等)、和命令窗口颜色进行设置。

6、最后点击“OK”完成设置。该设置始终有效,不会随matlab的关闭或重启改变。

光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
dukinkin
推荐于2017-09-03 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:935万
展开全部
surf(x,y,z,C)
画出来就是三维的曲面,x,y,z是坐标数据,C是颜色数据

函数会根据x,y,z坐标的数据,画出曲面
而根据C数据在对应的位置显示对应的颜色
当你传递给函数的参数C是一个大小和x,y,z一样的矩阵时
而颜色对应采取一个简单的线性对应
colormap需要一个Nx3的矩阵
其中N行表示N种颜色,3列表示每种颜色的r,g,b分量
将C中的数据从最小到最大值,按照线性的间隔分成N类
但C的数据在第n类时,就选colormap中第n行的颜色
所以实现数据和颜色的对应非常简单
只要指定一个colormap再将数据传递给C参数就可以了

那位大神用了
surf(m,n,0*m,B,'linestyle',':');
其中想x,y就是m,n 而z=0*m都是零
所以画的图面就是z=0这个平面,而颜色数据就是B
并且他用view(2),以二维的视角去观看

所以他使用一个画3维曲面的函数surf,去实现一个画2维平面的功能

实际上要实现二维网格不同颜色显示,可以用更简单的
imagesc函数
更多追问追答
追问
您解释的非常清楚,我看懂了。看来您比大神还大神。但是我还想问,他这个代码中哪个地方是把B的数据和map这个颜色矩阵线性对应。也就是说一个B中的一个值就对应的一个[r,g,b],这个是怎么办到的?
追答

颜色的对应是有surf函数自己完成的

你只要把B矩阵作为参数传递给surf就可以了


而至于用什么颜色

就用colormap (map)指定一个颜色map

那位大神还用一些几句,自己创造了一个map,也就是红-白-绿的map

map=ones(199,3);

c=linspace(0,1)';

map(1:100,[2,3])=[c,c];

map(199:-1:100,[1,3])=[c,c];


你也可以不用自己去创造map,而用matlab自带的定义好的map


例如用黑白灰度map

colormap(gray);

用类似骨科x光图片的颜色map

colormap(bone);


而还可以指定需要分为多少种颜色

colormap(gray(100));%分100中颜色


你也可以再画完图之后,弹出图片对话框figure中

的在菜单中找到 Edit->colormap选项,就会弹出Colormap Editor 对话框,如下图

对话框会显示现在所用的colormap

你的数据最小值就会显示最左边的颜色,最大值显示最右边的颜色

中间的颜色线性分布

在对话框中Tools->Standard Colormaps中可以选择matlab定义好的map


你可以逐一试试

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式