matlab二维矩阵可视化

更新时间:2023-05-13 15:09:35 阅读: 评论:0

matlab⼆维矩阵可视化1、使⽤imagesc函数,绘制出彩⾊矩阵块
matrix_data = [1,2,3;4,5,6;7,8,9];
imagesc(matrix_data);
2、
别⼈写的matrixplot函数
function matrixplot(data,varargin)
%  根据实值矩阵绘制⾊块图,⽤丰富的颜⾊和形状形象的展⽰矩阵元素值的⼤⼩。
%
%  matrixplot(data) 绘制矩阵⾊块图,data为实值矩阵,每⼀个元素对应⼀个⾊块,⾊
%                    块颜⾊由元素值⼤⼩决定。
%
%  matrixplot(data, 'PARAM1',val1, 'PARAM2',val2, ...)
%          ⽤成对出现的参数名/参数值控制⾊块的各项属性。可⽤的参数名/参数值如下:
%          'FigShape' --- 设定⾊块的形状,其参数值为:
%                'Square'  --- ⽅形(默认)
%                'Circle'  --- 圆形
%                'Ellip' --- 椭圆形
%                'Hexagon' --- 六边形
%                'Dial'    --- 表盘形
%
%          'FigSize' --- 设定⾊块的⼤⼩,其参数值为:
%                'Full'    --- 最⼤⾊块(默认)
%                'Auto'    --- 根据矩阵元素值⾃动确定⾊块⼤⼩
%
%          'FigStyle' --- 设定矩阵图样式,其参数值为:
%                'Auto'    --- 矩形矩阵图(默认)
%                'Tril'    --- 下三⾓矩阵图
%                'Triu'    --- 上三⾓矩阵图
%
%          'FillStyle' --- 设定⾊块填充样式,其参数值为:
%                'Fill'    --- 填充⾊块内部(默认)
%                'NoFill'  --- 不填充⾊块内部
%
%          'DisplayOpt' --- 设定是否在⾊块中显⽰矩阵元素值,其参数值为:
%                'On'      --- 显⽰矩阵元素值(默认)
%                '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,...),其参数值为:
%                字符串矩阵或字符串元胞数组,若为字符串矩阵,其⾏数应与data的⾏数相同
%                若为字符串元胞数组,其长度应与data的⾏数相同。
%
%                '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);
%  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','FigSize','Auto','ColorBar','on','XVarNames',XVarNames,'YVarNames',XVarNames); % 对第⼀个输⼊参数类型进⾏判断
if ~ismatrix(data) || ~isreal(data)
error('输⼊参数类型不匹配:第⼀个输⼊参数应为实值矩阵');
end
% 解析成对出现的参数名/参数值
[FigShape,FigSize,FigStyle,FillStyle,DisplayOpt,TextColor,XVarNames,...
YVarNames,ColorBar,GridOpt] = parInputs(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;
end
z = zeros(size(x))+0.2;
sx = x(1:end-1,1:end-1)+0.5;
sy = 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;
elif strncmpi(FigStyle,'Triu',4)
z(tril(ones(size(z)),-2)>0) = NaN;
sx(tril(ones(size(sx)),-1)>0) = NaN;
end
sx = sx(:);
sy = sy(:);
id = isnan(sx) | isnan(data);
sx(id) = [];
sy(id) = [];
data(id) = [];
if impty(XVarNames)
XVarNames = strcat('X',cellstr(num2str((1:n)')));
el
if (iscell(XVarNames) && (numel(XVarNames) ~= n)) || (~iscell(XVarNames) && (size(XVarNames,1) ~= n))        error('X轴⽅向变量名应为字符串矩阵或字符串元胞数组,其长度与输⼊矩阵的列数相同');
end
end
if impty(YVarNames)
YVarNames = strcat('Y',cellstr(num2str((1:m)')));
el
if (iscell(YVarNames) && (numel(YVarNames) ~= m)) || (~iscell(YVarNames) && (size(YVarNames,1) ~= m))        error('Y轴⽅向变量名应为字符串矩阵或字符串元胞数组,其长度与输⼊矩阵的⾏数相同');
end深圳社保查询个人账户>主体结构包括哪些
end
% 绘图
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,...
'EdgeColor',[0.7,0.7,0.7],...
'FaceAlpha',0,...
'LineWidth',1);  % 参考⽹格线
axis([-0.1,n+0.1,-0.1,m+0.1,-0.5,0.5]);
view(2);
% 设置X轴和Y轴刻度位置及标签
t(gca,'Xtick',(1:n)-0.5,...
'XtickLabel',XVarNames,...
'Ytick',(1:m)-0.5,...
'YtickLabel',YVarNames,...
'XAxisLocation','top',...
'YDir','rever',...
'Xcolor',[0.7,0.7,0.7],...
'Ycolor',[0.7,0.7,0.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,n)^0.55);
if strncmpi(TextColor,'Auto',3)
ColorMat = get(gcf,'ColorMap');
nc = size(ColorMat,1);
cid = fix(mapminmax(data',0,1)*nc)+1;
cid(cid<1) = 1;
cid(cid>nc) = 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,:));
end
简笔画法el
text(sx,sy,0.1*ones(size(sx)),str,...
'FontUnits','normalized',...
'FontSize',scale,...
'fontweight','bold',...
'HorizontalAlignment','center',...
'Color',TextColor);
end
end
% 设置X轴和Y轴刻度标签的缩进⽅式
MyTickLabel(gca,FigStyle);
% 添加颜⾊条
if strncmpi(ColorBar,'On',2)
if any(strncmpi(FigStyle,{'Auto','Triu'},4))
colorbar('Location','EastOutside');
el
colorbar('Location','SouthOutside');
end
end
end
童年中的好词好句% ---------------------------------------------------
%  调整坐标轴刻度标签⼦函数
% ---------------------------------------------------
function MyTickLabel(ha,tag)
%  根据显⽰范围⾃动调整坐标轴刻度标签的函数
%  ha  坐标系句柄值
%  tag  调整坐标轴刻度标签的标识字符串,可⽤取值如下:
%        'Auto' --- 将x轴刻度标签旋转90度,y轴刻度标签不作调整
%        'Tril' --- 将x轴刻度标签旋转90度,并依次缩进,y轴刻度标签不作调整%        'Triu' --- 将x轴刻度标签旋转90度,y轴刻度标签依次缩进
%  Example:
%  MyTickLabel(gca,'Tril');
if ~ishandle(ha)
warning('MATLAB:warning2','第⼀个输⼊参数应为坐标系句柄');
return;
end
if ~strcmpi(get(ha,'type'),'axes')
warning('MATLAB:warning3','第⼀个输⼊参数应为坐标系句柄');
xstr = get(ha,'XTickLabel');
xtick = get(ha,'XTick');
xl = xlim(ha);
ystr = get(ha,'YTickLabel');
ytick = get(ha,'YTick');
yl = ylim(ha);
t(ha,'XTickLabel',[],'YTickLabel',[]);
x = zeros(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;
elif strncmpi(tag,'Triu',4)
x = x + (1:ny) - 1;
end
text(xtick,y,xstr,...
'rotation',90,...
'Interpreter','none',...
'color','r',...
'HorizontalAlignment','left');
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是字符串变量,⽤来指定⾊块⼤⼩。
%
%  Example:
%        x = rand(10,1);
%        y = rand(10,1);
%        z = rand(10,1);
%        MyPatch(x,y,z,'s','Auto');
%
% 输⼊参数类型判断
if nargin < 3
error('⾄少需要三个输⼊参数');
end
if ~isreal(x) || ~isreal(y) || ~isreal(z)
error('前三个输⼊应为实值数组');
腿的英语怎么说end
n = numel(z);
if numel(x) ~= n || numel(y) ~= n
error('坐标应等长');
end
if strncmpi(FigSize,'Auto',3) && ~strncmpi(FigShape,'Ellip',1)
id = (z == 0);
x(id) = [];
y(id) = [];
z(id) = [];
end
if impty(z)
return;
end
% 求⾊块顶点坐标
rab1 = ones(size(z));
maxz = max(abs(z));
if maxz == 0
maxz = 1;
end
rab2 = abs(z)/maxz;
if strncmpi(FigShape,'Square',1)
% ⽅形
if strncmpi(FigSize,'Full',3)
r = rab1;
el
r = sqrt(rab2);
end
SquareVertices(x,y,z,r);
elif strncmpi(FigShape,'Circle',1)
if strncmpi(FigSize,'Full',3)
r = 0.5*rab1;
el
r = 0.5*sqrt(rab2);
end
CircleVertices(x,y,z,r);
elif strncmpi(FigShape,'Ellip',1)
% 椭圆形
a = 0.48 + rab2*(0.57-0.48);
b = (1-rab2).*a;
EllipVertices(x,y,z,a,b);
elif strncmpi(FigShape,'Hexagon',1)
% 六边形
if strncmpi(FigSize,'Full',3)
r = 0.5*rab1;
el
r = 0.5*sqrt(rab2);
end
HexagonVertices(x,y,z,r);
el
% 表盘形
if strncmpi(FigSize,'Full',3)
r = 0.45*rab1;
el
r = 0.45*sqrt(rab2);
end
DialVertices(x,y,z,r);
end
end
%--------------------------------------------------
% 求⾊块顶点坐标并绘制⾊块的⼦函数
%--------------------------------------------------
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-hy;y-hy];
Zp = repmat(z,[5,1]);
patch(Xp,Yp,Zp,'FaceColor','flat','EdgeColor','flat');
end
携程旅行网首页
function 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');
end
function EllipVertices(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;
Xp = repmat(x,[m,1]) + x0.*cos(t0) - y0.*sin(t0);
Yp = repmat(y,[m,1]) + x0.*sin(t0) + y0.*cos(t0);
Zp = repmat(z,[m,1]);
patch(Xp,Yp,Zp,'FaceColor','flat','EdgeColor','flat');
end
function HexagonVertices(x,y,z,r)
% 六边形
t = linspace(0,2*pi,7)';
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');
end
function DialVertices(x,y,z,r)
% 表盘形
% 绘制表盘扇形
吉林省高考分数线
maxz = max(abs(z));
t0 = z*2*pi/maxz-pi/2;
t0 = cell2mat(arrayfun(@(x)linspace(-pi/2,x,30)',t0,'UniformOutput',0)); m = size(t0,1);
r0 = repmat(r,[m,1]);
Xp = [x;repmat(x,[m,1]) + r0.*cos(t0);x];
Yp = [y;repmat(y,[m,1]) + r0.*sin(t0);y];
Zp = repmat(z,[m+2,1]);

本文发布于:2023-05-13 15:09:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/614938.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   字符串   参数   刻度   标签   数组
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图