ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:367.97KB ,
资源ID:7155124      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7155124.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(利用matlab绘制矩阵色块图.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

利用matlab绘制矩阵色块图.docx

1、利用matlab绘制矩阵色块图R语言中有一个根据实值矩阵绘制色块图的程序(用于绘制相关系数矩阵图),可以用丰 富的颜色和形状形象的展示矩阵元素值的大小。遗憾的是 MATLAB中没有这样的函数,因此我就用MATLAB编写了一个 matrixplot 函数,下面给出示例和源码, 与大家一起分享!*【例1】绘制网格线,网格中显示矩阵元素。显示黑色文字: x = 1,-0.2,0.3,0.8,-0.5-0.2,1,0.6,-0.7,0.20.3,0.6,1,0.5,-0.30.8,-0.7,0.5,1,0.7-0.5,0.2,-0.3,0.7,1; XVarNames = xiezhh,hepi ng

2、,keda,tust,tianji n;matrixplot(x,FillStyle, nofill,XVarNames,XVarNames,YVarNames,XVarNam es);效果图1 :根据矩阵元素值自动设置文字颜色:【例2】绘制实值矩阵各元素对应的色块,通过不同的 参数/参数值”控制色块的形状、大小、颜色等属性。方形色块,充满方格,灰白色字体matrixplot(x,XVarNames,XVarNames,YVarNames,XVarNames,TextColor,0. 6,0.6,0.6,ColorBar,on);效果图3 :方形色块,根据矩阵元素值自动确定色块的大小和颜色,不

3、显示字体椭圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体matrixplot(x,XVarNames,XVarNames,YVarNames,XVarNames,DisplayOpt,o ff,FigSize,Auto,ColorBar,o n,FigShape,e);圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体,上三角形式显示六边形色块,根据矩阵元素值自动确定色块的大小和颜色,显示字体,下三角形式显示matrixplot(x,XVarNames,XVarNames,YVarNames,XVarNames,DisplayOpt,o n,FigSize,Auto,C

4、olorBar,o n,FigShape,h,FigStyle,Tril);效果图7 :表盘形色块,根据矩阵元素值自动确定色块的颜色,不显示字体matrixplot(x,XVarNames,XVarNames,YVarNames,XVarNames,DisplayOpt,o ff,FigSize,Full,ColorBar,o n,FigShape,d);【例3】读取真彩图片,绘制伪红外图。 I = double(imread(kids.tif); matrixplot(l,DisplayOpt,off,colorbar,o n,grid,off);最后贴上matrixplot 函数的源码,源

5、码中有详细的调用格式及参数说明,感兴趣的版友可以通过设置不同参数,做出更为精彩的图形,希望 大家喜欢!function matrixplot(data,vararg in)% 根据实值矩阵绘制色块图,用丰富的颜色和形状形象的展示矩阵元素值的大小。%matrixplot(data)绘制矩阵色块图, data 为实值矩阵,每一个元素对应一个色块,色%块颜色由元素值大小决定。%matrixplot(data, PARAM1,val1, PARAM2,val2, .)%用成对出现的参数名 / 参数值控制色块的各项属性。可用的参数名 / 参数值如下:%FigShape -设定色块的形状,其参数值为:%S

6、quare- 方形(默认)%Circle- 圆形%Ellipse- 椭圆形%Hexagon - 六边形%Dial- 表盘形%FigSize -设定色块的大小,其参数值为:%Full- 最大色块(默认)%Auto- 根据矩阵元素值自动确定色块大小%FigStyle -设定矩阵图样式,其参数值为:%Auto- 矩形矩阵图(默认)%Tril- 下三角矩阵图%Triu- 上三角矩阵图%FillStyle -设定色块填充样式,其参数值为:%Fill - 填充色块内部(默认)%NoFill- 不填充色块内部%DisplayOpt - 设定是否在色块中显示矩阵元素值,其参数值为:%On- 显示矩阵元素值(默

7、认)%Off- 不显示矩阵元素值%TextColor -设定文字的颜色,其参数值为:%表示单色的字符( r,g,b,y,m,c,w,k ), 默认为黑色%1行 3 列的红、绿、蓝三元色灰度值向量(r,g,b )%Auto- 根据矩阵元素值自动确定文字颜色%XVarNames-设定X轴方向需要显示的变量名(默认为 X1,X2,),其参数值为:%字符串矩阵或字符串元胞数组,若为字符串矩阵,其行数应与 data 的列数相同%若为字符串元胞数组,其长度应与 data 的列数相同。% YVarNames - 设定 Y 轴方向需要显示的变量名(默认为 Y1,Y2,. ),其参数值 为:% 字符串矩阵或字符

8、串元胞数组,若为字符串矩阵,其行数应与 data 的行数相同% 若为字符串元胞数组,其长度应与 data 的行数相同。ColorBar - 设定是否显示颜色条,其参数值为:% On - 显示颜色条%Off - 不显示颜色条(默认)Grid - 设定是否显示网格线,其参数值为: On - 显示网格线(默认)Off - 不显示网格线% Example: % x = 1,-0.2,0.3,0.8,-0.5% -0.2,1,0.6,-0.7,0.2% 0.3,0.6,1,0.5,-0.3% 0.8,-0.7,0.5,1,0.7% -0.5,0.2,-0.3,0.7,1;% matrixplot(x);

9、% matrixplot(x,DisplayOpt,off);% matrixplot(x,FillStyle,nofill,TextColor,Auto);% matrixplot(x,TextColor,0.7,0.7,0.7,FigShap,s,FigSize,Auto,ColorBar,on);% matrixplot(x,TextColor,k,FigShap,d,FigSize,Full,ColorBar,on,FigStyle,Triu);% XVarNames = xiezhh,heping,keda,tust,tianjin;% matrixplot(x,FigShap,e,

10、FigSize,Auto,ColorBar,on,XVarNames,XVarNames,YVarNames,XVarNames);% CopyRight : xiezhh (谢中华) ,2013.01.24 编写% 对第一个输入参数类型进行判断 if ismatrix(data) | isreal(data) error( 输入参数类型不匹配:第一个输入参数应为实值矩阵 ); end % 解析成对出现的参数名 / 参数值FigShape,FigSize,FigStyle,FillStyle,DisplayOpt,TextColor,XVarNames,.YVarNames,ColorBar,

11、GridOpt = parseInputs(varargin:);% 产生网格数据m,n = size(data);x,y = meshgrid(0:n,0:m);data = data(:); maxdata = nanmax(data); mindata = nanmin(data); rangedata = maxdata - mindata; if isnan(rangedata)warning(MATLAB:warning1, 请检查您输入的矩阵是否合适! );return;endz = zeros(size(x)+0.2;sx = x(1:end-1,1:end-1)+0.5;sy

12、 = y(1:end-1,1:end-1)+0.5;if strncmpi(FigStyle,Tril,4)z(triu(ones(size(z),2)0) = NaN; sx(triu(ones(size(sx),1)0) = NaN;elseif strncmpi(FigStyle,Triu,4)z(tril(ones(size(z),-2)0) = NaN;sx(tril(ones(size(sx),-1)0) = NaN;endsx = sx(:);sy = sy(:);id = isnan(sx) | isnan(data);sx(id) = ;sy(id) = ;data(id)

13、= ;if isempty(XVarNames)XVarNames = strcat(X,cellstr(num2str(1:n);elseif (iscell(XVarNames) & (numel(XVarNames) = n) | (iscell(XVarNames) & (size(XVarNames,1) = n)error(X 轴方向变量名应为字符串矩阵或字符串元胞数组,其长度与输入矩阵的列数 相同 );endendif isempty(YVarNames)YVarNames = strcat(Y,cellstr(num2str(1:m);elseif (iscell(YVarNa

14、mes) & (numel(YVarNames) = m) | (iscell(YVarNames) & (size(YVarNames,1) = m)error(Y 轴方向变量名应为字符串矩阵或字符串元胞数组,其长度与输入矩阵的行数 相同 );endend% 绘图figure(color,w,.units,normalized,.pos,0.289165,0.154948,0.409956,0.68099); axes(units,normalized,pos,0.1,0.022,0.89,0.85); if strncmpi(GridOpt,On,2)mesh(x,y,z,. EdgeCo

15、lor,0.7,0.7,0.7,.FaceAlpha,0,. LineWidth,1); % 参考网格线 end hold on; axis equal;axis(-0.1,n+0.1,-0.1,m+0.1,-0.5,0.5);view(2);% 设置 X 轴和 Y 轴刻度位置及标签 set(gca,Xtick,(1:n)-0.5,.XtickLabel,XVarNames,.Ytick,(1:m)-0.5,.YtickLabel,YVarNames,. XAxisLocation,top,.YDir,reverse,.Xcolor,0.7,0.7,0.7,.Ycolor,0.7,0.7,0.

16、7,.TickLength,0,0);axis off% 绘制填充色块if strncmpi(FillStyle,Fill,3) MyPatch(sx,sy,data,FigShape,FigSize);end % 显示数值文本信息if strncmpi(DisplayOpt,On,2)str = num2str(data,%4.2f);scale = 0.1*max (n/m,1)/(max(m, nF0.55);if strncmpi(TextColor,Auto,3)ColorMat = get(gcf,ColorMap);nc = size(ColorMat,1);cid = fix(

17、mapminmax(data,0,1)*nc)+1; cid(cidnc) = nc;TextColor = ColorMat(cid,:);for i = 1:numel(data) text(sx(i),sy(i),0.1,str(i,:),.FontUnits,normalized,. FontSize,scale,.fontweight,bold,.HorizontalAlignment,center,. Color,TextColor(i,:);endelsetext(sx,sy,0.1*ones(size(sx),str,. FontUnits,normalized,. FontS

18、ize,scale,.fontweight,bold,.HorizontalAlignment,center,. Color,TextColor);endend% 设置 X 轴和 Y 轴刻度标签的缩进方式 MyTickLabel(gca,FigStyle);% 添加颜色条if strncmpi(ColorBar,On,2)if any(strncmpi(FigStyle,Auto,Triu,4) colorbar(Location,EastOutside);elsecolorbar(Location,SouthOutside);end end end% % 调整坐标轴刻度标签子函数% func

19、tion MyTickLabel(ha,tag) % 根据显示范围自动调整坐标轴刻度标签的函数% ha 坐标系句柄值% tag 调整坐标轴刻度标签的标识字符串,可用取值如下:% Auto - 将 x 轴刻度标签旋转 90 度, y 轴刻度标签不作调整% Tril - 将 x 轴刻度标签旋转 90 度,并依次缩进, y 轴刻度标签不作调整% Triu - 将 x 轴刻度标签旋转 90 度, y 轴刻度标签依次缩进% Example:% MyTickLabel(gca,Tril);% CopyRight : xiezhh (谢中华) ,2013.1 编写if ishandle(ha)warning

20、(MATLAB:warning2, 第一个输入参数应为坐标系句柄 ); return;end if strcmpi(get(ha,type),axes)warning(MATLAB:warning3, 第一个输入参数应为坐标系句柄 );return;end axes(ha);xstr = get(ha,XTickLabel);xtick = get(ha,XTick);xl = xlim(ha);ystr = get(ha,YTickLabel);ytick = get(ha,YTick);yl = ylim(ha); set(ha,XTickLabel,YTickLabel,);x = ze

21、ros(size(ytick) + xl(1) - range(xl)/30; y = zeros(size(xtick) + yl(1) - range(yl)/70; nx = numel(xtick);ny = numel(ytick);if strncmpi(tag,Tril,4) y = y + (1:nx) - 1;elseif strncmpi(tag,Triu,4)x = x + (1:ny) - 1;endtext(xtick,y,xstr,.rotation,90,.Interpreter,none,. color,r,.HorizontalAlignment,left);

22、text(x,ytick,ystr,.Interpreter,none,.color,r,.HorizontalAlignment,right);end% % 根据散点数据绘制 3 维色块图子函数% function MyPatch(x,y,z,FigShape,FigSize)% 根据散点数据绘制 3 维色块图% MyPatch(x,y,z,FigShape,FigSize) x,y,z 是实值数组,用来指定色块中心点三维% 坐标。 FigShape 是字符串变量,用来指定色块形状。% FigSize 是字符串变量,用来指定色块大小。% CopyRight:xiezhh (谢中华) , 20

23、13.01 编写% Example :% x = rand(10,1);% y = rand(10,1);% z = rand(10,1);% MyPatch(x,y,z,s,Auto);% % 输入参数类型判断if nargin 3error( 至少需要三个输入参数 );endif isreal(x) | isreal(y) | isreal(z) error( 前三个输入应为实值数组 );end n = numel(z);if numel(x) = n | numel(y) = n error( 坐标应等长 );endif strncmpi(FigSize,Auto,3) & strncm

24、pi(FigShape,Ellipse,1) id = (z = 0);x(id) = ;y(id) = ;z(id) = ;end if isempty(z) return;end % 求色块顶点坐标rab1 = ones(size(z); maxz = max(abs(z);if maxz = 0maxz = 1;endrab2 = abs(z)/maxz;if strncmpi(FigShape,Square,1)% 方形if strncmpi(FigSize,Full,3)r = rab1;elser = sqrt(rab2);endSquareVertices(x,y,z,r);el

25、seif strncmpi(FigShape,Circle,1)% 圆形if strncmpi(FigSize,Full,3)r = 0.5*rab1;elser = 0.5*sqrt(rab2);endCircleVertices(x,y,z,r);elseif strncmpi(FigShape,Ellipse,1)% 椭圆形a = 0.48 + rab2*(0.57-0.48);b = (1-rab2).*a;EllipseVertices(x,y,z,a,b);elseif strncmpi(FigShape,Hexagon,1)% 六边形if strncmpi(FigSize,Ful

26、l,3)r = 0.5*rab1;elser = 0.5*sqrt(rab2);endHexagonVertices(x,y,z,r);else% 表盘形if strncmpi(FigSize,Full,3)r = 0.45*rab1;elser = 0.45*sqrt(rab2);endDialVertices(x,y,z,r);endend% % 求色块顶点坐标并绘制色块的子函数% function SquareVertices(x,y,z,r)% 方形hx = r/2;hy = hx;Xp = x-hx;x-hx;x+hx;x+hx;x-hx;Yp = y-hy;y+hy;y+hy;y-

27、hy;y-hy;Zp = repmat(z,5,1); patch(Xp,Yp,Zp,FaceColor,flat,EdgeColor,flat); endfunction CircleVertices(x,y,z,r)% 圆形t = linspace(0,2*pi,30);m = numel(t);Xp = repmat(x,m,1)+cos(t)*r;Yp = repmat(y,m,1)+sin(t)*r;Zp = repmat(z,m,1);patch(Xp,Yp,Zp,FaceColor,flat,EdgeColor,flat); endfunction EllipseVertices(x,y,z,a,b)% 椭圆形t = linspace(0,2*pi,30);m = numel(t);t0 = -sign(z)*pi/4;t0 = repmat(t0,m,1);x0 = cos(t)*a;y0 = sin(t)*b;X

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1