matlab中在灰度共生矩阵特征提取图像中用axis([])提取的一部分图像运用数据矩阵相加的方法

matlab 灰度图像矩阵的大小问题(入门级)有以下几个问题:1 不同的灰度图像在matlab中用imread读取的时候,矩阵的大小不一样,矩阵的维数大小不一样代表了什么?2 能不能将其变为方阵?那这样的话图像会有什么变化?3 怎么将一个灰度图像加模糊?应该是乘上一个矩阵.4 怎么对一个图像加噪声,比如珀松噪声
灰度的数字图像中,每个像素用一个数表示,整个图像用矩阵表示,矩阵的行数就是图像的高,矩阵的列数就是图像的宽.对于彩色图像需要三通道表示,matlab里表示为三维矩阵,其中第三维的长度是3.imresize函数可以改变图像矩阵的尺寸,可以直观理解为不保持宽高比的任意缩放.当然可以用截取的方法缩小图像尺寸.灰度图像加模糊的方法很多,最简单的是用均值滤波,而不是乘以矩阵.请看imfilter函数.加噪声用imnoise函数.
我的qq:2 4 0 6 3 4 0 5 7,能否加一下,我是刚接手图像这方面的东西,以前都是通信一维信号的东西。方便的话,交流一下,先谢过
有问题直接问好了。虽说图像是二维信号,不过现在已经不流行用信号的观点来研究图像了。
作为入门的话建议去看一下书,中国的有章毓晋老师的《图像工程(上) -- 图像处理》,外国的有冈萨雷斯的matlab版的数字图像处理。
为您推荐:
其他类似问题
扫描下载二维码&MATLAB小技巧之十六:利用MATLAB绘制矩阵色块图&这福利我要幸福死了! - MATLAB的日志,人人网,MATLAB的公共主页
好久不发状态了,大家还在吗?还在学习MATLAB么?
&MATLAB小技巧之十六:利用MATLAB绘制矩阵色块图&这福利我要幸福死了!
更多技巧资料请关注微信公共账号:数据挖掘的那些事
R语言中有一个根据实值矩阵绘制色块图的程序(用于绘制相关系数矩阵图),可以用丰富的颜色和形状形象的展示矩阵元素值的大小。遗憾的是MATLAB中没有这样的函数,因此我就用MATLAB编写了一个matrixplot函数,下面给出示例和源码,与大家一起分享!
**********************************************
【例1】绘制网格线,网格中显示矩阵元素。
显示黑色文字:
&& 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];&& XVarNames = {'xiezhh','heping','keda','tust','tianjin'};&& matrixplot(x,'FillStyle','nofill','XVarNames',XVarNames,'YVarNames',XVarNames);
根据矩阵元素值自动设置文字颜色:
&& matrixplot(x,'FillStyle','nofill','XVarNames',XVarNames,'YVarNames',XVarNames,'TextColor','Auto','ColorBar','on');
【例2】绘制实值矩阵各元素对应的色块,通过不同的&参数/参数值&控制色块的形状、大小、颜色等属性。
方形色块,充满方格,灰白色字体
&& matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'TextColor',[0.6,0.6,0.6],'ColorBar','on');
方形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体
&& matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Auto','ColorBar','on');
椭圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体
&& matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Auto','ColorBar','on','FigShape','e');
圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体,上三角形式显示
&& matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Auto','ColorBar','on','FigShape','c','FigStyle','Triu');
六边形色块,根据矩阵元素值自动确定色块的大小和颜色,显示字体,下三角形式显示
&& matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','on','FigSize','Auto','ColorBar','on','FigShape','h','FigStyle','Tril');
表盘形色块,根据矩阵元素值自动确定色块的颜色,不显示字体
&& matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Full','ColorBar','on','FigShape','d');
【例3】读取真彩图片,绘制伪红外图。
&& I = double(imread('kids.tif'));&& matrixplot(I,'DisplayOpt','off','colorbar','on','grid','off');
最后贴上matrixplot函数的源码,源码中有详细的调用格式及参数说明,感兴趣的版友可以通过设置不同参数,做出更为精彩的图形,希望大家喜欢!function matrixplot(data,varargin)%&& 根据实值矩阵绘制色块图,用丰富的颜色和形状形象的展示矩阵元素值的大小。%%&& matrixplot(data) 绘制矩阵色块图,data为实值矩阵,每一个元素对应一个色块,色%&&&&&&&&&&&&&&&&&&& 块颜色由元素值大小决定。%%&& matrixplot(data, 'PARAM1',val1, 'PARAM2',val2, ...) %&&&&&&&&& 用成对出现的参数名/参数值控制色块的各项属性。可用的参数名/参数值如下:%&&&&&&&&& 'FigShape' --- 设定色块的形状,其参数值为:%&&&&&&&&&&&&&&& 'Square'& --- 方形(默认)%&&&&&&&&&&&&&&& 'Circle'& --- 圆形%&&&&&&&&&&&&&&& 'Ellipse' --- 椭圆形%&&&&&&&&&&&&&&& '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的行数相同。%%&&&&&&&&& '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);%&& 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);%%&& CopyRight:xiezhh(谢中华),编写
% 对第一个输入参数类型进行判断if ~ismatrix(data) || ~isreal(data)&&& error('输入参数类型不匹配:第一个输入参数应为实值矩阵');end
% 解析成对出现的参数名/参数值[FigShape,FigSize,FigStyle,FillStyle,DisplayOpt,TextColor,XVarNames,...&&& YVarNames,ColorBar,GridOpt] = parseInputs(varargin{:});
% 产生网格数据[m,n] = size(data);[x,y] = meshgrid(0:n,0:m);data = data(:);maxdata = nanmax(data);mindata = nanmin(data);rangedata = maxdata -if isnan(rangedata)&&& warning('MATLAB:warning1','请检查您输入的矩阵是否合适!');&&&endz = 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;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) = [];
if isempty(XVarNames)&&& XVarNames = strcat('X',cellstr(num2str((1:n)')));else&&& if (iscell(XVarNames) && (numel(XVarNames) ~= n)) || (~iscell(XVarNames) && (size(XVarNames,1) ~= n))&&&&&&& error('X轴方向变量名应为字符串矩阵或字符串元胞数组,其长度与输入矩阵的列数相同');&&& endendif isempty(YVarNames)&&& YVarNames = strcat('Y',cellstr(num2str((1:m)')));else&&& if (iscell(YVarNames) && (numel(YVarNames) ~= m)) || (~iscell(YVarNames) && (size(YVarNames,1) ~= m))&&&&&&& error('Y轴方向变量名应为字符串矩阵或字符串元胞数组,其长度与输入矩阵的行数相同');&&& endend
% 绘图figure('color','w',...&&& 'units','normalized',...&&& 'pos',[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);&& % 参考网格线endaxis([-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.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)&&n...
阅读(9536)|
人人移动客户端下载博客访问: 399983
博文数量: 87
博客积分: 1437
博客等级: 上尉
技术积分: 810
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: WINDOWS
第五讲计算结果的可视化
本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。
5.1 二维平面图形
5.1.1 基本图形函数
plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是
说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:
(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制
曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲
当x 为m× n 矩阵时,就由n 条曲线。
(2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。
(3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,… 元素为纵坐标值绘
制多条曲线。
例5.1.1 画出一条正弦曲线和一条余弦曲线。
>> x=0:pi/10:2*
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,x,y2)
图5.1.1 函数plot 绘制的正弦曲线
在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MATLAB 软件专
门提供了这方面的参数选项(见表5.1.1),我们只要在每个坐标后加上相关字符串,就可
现它们的功能。
表5.1.1 绘图参数表
色彩字符颜色线型字符线型格式标记符号数据点形式标记符号数据点形式
y 黄- 实线. 点< 小于号
m 紫: 点线o 圆s 正方形
c 青-. 点划线x 叉号d 菱形
r 红- - 虚线+ 加号h 六角星
g 绿* 星号p 五角星
b 蓝v 向下三角形
w 白^ 向上三角形
k 黑> 大于号
例如,在上例中输入
>> plot(x,y1,'r+-',x,y2,'k*:')
则得图5.1.2
图5.1.2 使用不同标记的plot 函数绘制的正弦曲线
5.1.2 图形修饰
MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。
表5.1.2 图形修饰函数表
grid on (/off) 给当前图形标记添加(取消)网络
xlable(‘string’) 标记横坐标
ylabel(‘string’) 标记纵坐标
title(‘string’) 给图形添加标题
text(x,y,’string’) 在图形的任意位置增加说明性文本信息
gtext(‘string’) 利用鼠标添加说明性文本信息
axis([xmin xmax ymin ymax]) 设置坐标轴的最小最大值
例5.1.2 给例5.1.1 的图形中加入网络和标记。(见图5.1.3 和5.1.4)
>> x=0:pi/10:2*
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,x,y2)
>> grid on
>> xlabel('independent variable X')
>> ylabel('Dependent Variable Y1 & Y2')
>> title('Sine and Cosine Curve')
>> text(1.5,0.3,'cos(x)')
>> gtext('sin(x)')
>> axis([0 2*pi -0.9 0.9])
图5.1.3 使用了图形修饰的plot 函数绘制的正弦曲线
5.1.3 图形的比较显示
在一般默认的情况下,MATLAB 每次使用plot 函数进行图形绘制,将重新产生一个图
形窗口。但有时希望后续的图形能够和前面所绘制的图形进行比较。一般来说有两种方法
一是采用hold on(/off)命令,将新产生的图形曲线叠加到已有的图形上;二是采用
subplot(m,n,k)函数,将图形窗口分隔成n m× 个子图,并选择第k 个子图作为当前图形
后在同一个视图窗口中画出多个小图形。
例5.1.3 在同一窗口中绘制线段。(见图5.1.5)
>> x=0:pi/10:2*
>> y1=sin(x);
>> y2=cos(x);
>> y4=log(x);
>> plot(x,y1,x,y2)
>> hold on
>> plot(x,y3)
>> plot(x,y4)
>> hold off
例5.1.4 在多个窗口中绘制图形。(见图5.1.6)
>> x=0:pi/10:2*
>> y1=sin(x);
>> y2=cos(x);
>> y3=exp(x);
>> y4=log(x);
>> subplot(2,2,1);
>> plot(x,y1);
>> subplot(2,2,2);
>> plot(x,y2);
>> subplot(2,2,3);
>> plot(x,y3);
>> subplot(2,2,4);
>> plot(x,y4);
[说明] (1)子窗口的序号按行由上往下,按列从左向右编号。
(2)如果不用指令clf 清除,以后图形将被绘制在子图形窗口中。
图5.1.4 设置坐标轴最大最小值的正弦曲线
图5.1.5 图形的比较显示(曲线叠加方法)
图5.1.6 图形的比较显示(图形窗口分割方法)
5.2 三维立体图形
5.2.1 三维曲线图
与二维图形相对应,MATLAB 提供了plot3 函数,可以在三维空间中绘制三维曲线,
它的格式类似于plot,不过多了z 方向的数据。plot3 的调用格式为:
plot3(x1,y1,z1,x2,y2,z2,...)
其中x1,y1,z1,x2,y2,z2,…等分别为维数相同的向量,分别存储着曲线的三个坐标值,该
的使用方式和plot 类似,也可以采用多种的颜色或线型(见表5.1.1)来区分不同的数据
只需在每组变量后面加上相关字符串即可实现该功能。
例5.2.1 绘制方程x=t
&&&&&&&&&&&&&&&&y=sin(t)
&&&&&&&&&&&&&&&&z=cos(t)
在t=[0,2*pi]上
的空间方程。(见图5.2.1)
>> x=0:pi/10:2*
>> y1=sin(x);
>> y2=cos(x);
>> plot3(y1,y2,x,'m:p')
>> grid on
>> xlabel('Dependent Variable Y1')
>> ylabel('Dependent Variable Y2')
>> zlabel('Independent Variable X')
>> title('Sine and Cosine Curve')
图5.2.1 函数plot 绘制的三维曲线图
5.2.2 三维曲面图
如果要画一个三维的曲面,可以使用mesh(X,Y,Z)或surf(X,Y,Z)函数来实现。
mesh 函数为数据点绘制网格线,图形中的每一个已知点和其附近的点用直线连接。surf
函数和mesh 的用法类似,但它可以画出着色表面图,图形中的每一个已知点与其相邻点以
平面连接。
为方便测试立体绘图,MATLAB 提供了一个peaks 函数,它可以产生一个的高
斯分布矩阵,其生成方程是
z=3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)-1/3*ex
p(-(x+1).^2-y.^2)
对应的图形是一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点。
下面使用peaks 函数来比较一下mesh 和surf 的区别。
例5.2.2 分别用mesh 函数和surf 函数绘制高斯矩阵的曲面。
>> z=peaks(40);
>> mesh(z);
>> surf(z);
图5.2.2 mesh 函数绘制的三维曲面图
图5.2.3 surf 函数绘制的着色表面图
在曲面绘图中,另一个常用的函数是meshgrid 函数,其一般引用格式是:
[X, Y]=meshgrid (x, y)
其中x 和y 是向量,通过meshgrid 函数就可将x 和y 指定的区域转换成为矩阵X 和Y。
这样我们在绘图时就可以先用meshgrid 函数产生在x-y 平面上的二维的网格数据,再以一
组z 轴的数据对应到这个二维的网格,即可画出三维的曲面。
例5.2.3 绘制方程
&&&&&sin((x^2+y^2)^(1/2))
z = ---------------------
&&&&&&&&(x^2+y^2)^(1/2)
在x∈[-7.5,7.5];y∈[-7.5,7.5] 的图形。
>> x=-7.5:0.5:7.5;y=x;
>> [X,Y]=meshgrid(x,y);
>> R=sqrt(X.^2+Y.^2)+
>> Z=sin(R)./R;
>> surf(X,Y,Z)
>> xlabel('X 轴方向')
>> ylabel('Y 轴方向')
>> zlabel('Z 轴方向')
(见图5.2.4)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&_(x^2+y^2)
例5.2.4 绘制由方程形成的立体图。(见图5.2.5) z=xe
>> x=-2:0.1:2;y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=X.*exp(-X.^2-Y.^2);
>> surf(X,Y,Z)
5.2.3 观察点
MTALAB 允许用户设置观察点,其指令是: view(azimuth,elevation)
其中方位角azimuth 是观察点和坐标原点连线在x-y 平面的投影和y 轴负方向的夹角,仰
elevation 是观察点与坐标原点的连线和x-y 平面的夹角。对于这两个角度,三维图形的
值分别是-37.5 和30,二维图形的默认值是0 和90。
例5.2.5 从不同的角度观察高斯矩阵的曲面。
>> z=peaks(40);
>> subplot(2,2,1);
>> mesh(z);
>> subplot(2,2,2);
>> mesh(z);
>> view(-37.5,-30);
>> subplot(2,2,3);
>> mesh(z);
>> view(180,0);
>> subplot(2,2,4);
>> mesh(z);
>> view(0,90);
图5.2.6 对应不同观察点的三维曲面图
5.3 其他图形函数
除了plot 绘图函数以外,在有些场合对绘制的曲线会有一些特殊要求,这就要其他函
数来实现,常用的几种函数如下(见表5.3.1)
表5.3.1 其他图形函数表
loglog 使用对数坐标系绘图
semilogx 横坐标为对数坐标轴,纵坐标为线性坐标轴
semilogy 横坐标为线性坐标轴,纵坐标为对数坐标轴
polar 绘制极坐标图
fill 绘制实心图
bar 绘制直方图
pie 绘制饼图
area 绘制面积图
quiver 绘制向量场图
stairs 绘制阶梯图
sterm 绘制火柴杆图
>> x=0:pi/10:2*
>> y1=sin(x);
>> subplot(2,2,1);
>> plot(x,y1);
>> subplot(2,2,2);
>> bar(x,y1);
>> subplot(2,2,3);
>> fill(x,y1,'g');
>> subplot(2,2,4);
>> stairs(x,y1,'k');
图5.3.1 其他图形函数
5.3.1 直方图
函数bar(x)可以绘制直方图,这对统计或者数据采集非常直观实用。它共有四种形式:
bar,bar3,barh 和bar3h,其中bar 和bar3 分别用来绘制二维和三维竖直方图,barh 和b
别用来绘制二维和三维水平直方图,调用格式是:
bar(x,y) 其中x 必须单调递增或递减,y 为n m× 矩阵,可视化结果为m 组,每
组n 个垂直柱,也就是把y 的行画在一起,同一列的数据用相同的颜色表示;
bar(x,y,width) (或bar(y,width))指定每个直方条的宽度,如width>1,则直方条会重
叠,默认值为width=0.8;
bar(…,’grouped’) 使同一组直方条紧紧靠在一起;
bar(…,’stack’) 把同一组数据描述在一个直方条上。
>> y=[5 3 2 9;4 7 2 7;1 5 7 3];
>> subplot(2,2,1),bar(y)
>> x=[5 9 11];
>> subplot(2,2,2),bar3(x,y)
>> subplot(2,2,3),bar(x,y,'grouped')
>> subplot(2,2,4),bar(rand(2,3),.75,'stack')
图5.3.2 直方图
5.3.2 面积图
函数area 用来绘制面积图,面积图在plot 的基础上填充x 轴和曲线之间的面积,该图
用于查看某个数在该列所有数的总和中所占的比例。
>> x=-3:3;
>> y=[3 2 5;6 1 8;7 4 9;6 3 7;8 2 9;4 2 9;3 1 7];
>> area(x,y)
图5.3.3 面积图
5.3.3 饼图
函数pie 用来绘制饼图,它可以形象地表示出向量中各元素所占比例。其调用格式是:
pie(x) x 中的元素通过x/sum(x)进行归一化,以确定饼图中的份额;
pie(x,explode) 向量explode 和x 元素数相同,用来指出需要分开的饼片,explode 中
不为零的部分会被分开。
图5.3.4 饼图
例5.3.4 设某班的某课程的考试成绩如下:90 分以上有32 人,81 至90 有58 人,71
至80 分有27 人,60 至70 分为21 人,60 分以下有16 人,画出饼图。(见图5.3.4)
>> x=[32 58 27 21 16];
>> explode0=[1 0 0 0 0];
>> subplot(1,2,1)
>> pie(x,explode0)
>> explode1=[0 0 0 0 1];
>> subplot(1,2,2)
>> pie(x,explode1)
5.3.4 不同坐标系中的绘图
Semilogx,semilogy,loglo,polar(theta,rho)的使用方法和plot 完全类似,不同的只是绘
不同的图形坐标上。函数semilogx 绘制x 轴为对数标度的图形,在半对数坐标系中绘图;
函数semilogy 绘制y 轴为对数标度的图形;函数loglog 绘制两个轴都为对数间隔的图形
函数polar(theta,rho)绘制极坐标图形,其中theta 为相角,rho 为其对应的半径。
例5.3.5 绘制ρ=acos(3θ),a=2 的图形。(见图5.3.5)
>> theta=-pi:pi/80:
>> polar(theta,2*cos(3*theta))
图5.3.5 极坐标图
5.4 符号表达式绘图
MATLAB 软件提供了将表达式进行图形显示的功能。完成此功能需调用fplot 函数和
ezplot 函数。
函数fplot 用来绘制数学函数,其调用格式为: fplot(fun,lims)
其中fun 就是所要绘制的函数,可以是定义函数的M 文件名,也可以是以x 为变量的可计
算字符串。例如’diric(x,10)’或’[sin(x),cos(x)]’,对于向量x 的每个元素,函数
fun(x)必须返
回一个行向量。如果fun 返回[f1(x),f2(x),f3(x)],输入[x1;x2],就会返回矩阵
f1(x1) f2(x1) f3(x1)
f1(x2) f2(x2) f3(x2)
lims=[XMIN XMAX YMIN YMAX]限定了x,y 轴上的绘图空间。
>> subplot(2,2,1),fplot('humps',[0 1])
>> subplot(2,2,2),fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi])
>> subplot(2,2,3),fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])
>> subplot(2,2,4),fplot('sin(1./x)',[0.01 0.1],1e-3)
图5.4.1 fplot 函数绘制表达式图形
ezplot 函数是简捷绘图指令之一,它无需数据准备,直接画出函数图形,基本调用格式
为ezplot(f)
其中f 是字符串或代表数学函数的符号表达式,只有一个符号变量,可以是x,缺省情况下
x 轴的绘图区域为] 2 , 2 [ π π ? ,但我们可以用ezplot(f,xmin,xmax)或ezp
lot(f,[xmin,xmax])来指
定x 的范围。
>> y='x^2';
>> subplot(1,2,1)
>> ezplot(y)
>> subplot(1,2,2)
>> y='sin(x)';
>> ezplot(y,[-pi,pi])
图5.4.2 ezplot 函数绘制表达式图形
5.5 plot 函数
MATLAB 对数据是按列存储和计算的,运用plot(x)时,当x 为一个向量时,以其元
素为纵坐标,其序号为横坐标值绘制曲线。当x 为实矩阵时,则以其序号为横坐标,按列
制每列元素相对于序号的曲线,当x 为n m× 矩阵时,就有n 条曲线。
如果x,y 是同维向量,plot(x,y)指令以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。
如x 是向量,y 是有一维与x 元素数量相等的矩阵,则以x 为共同横坐标,按列绘制y 每
元素值,曲线数为y 的另一维的元素数。如果x,y 是同维矩阵,则以x,y 对应列元素为、
坐标分别绘制曲线,数目等于矩阵的列数。
>> x=[3 5 10 8];
>> subplot(2,2,1)
>> plot(x)
>> x=[3 5 10 8;7 2 9 4;2 7 2 7]';
>> subplot(2,2,2)
>> plot(x)
>> x=[3 5 6 8];
>> y=[1 5 10 4];
>> subplot(2,2,3)
>> plot(x,y)
>> x=[1 3 5 7;2 4 6 8]';
>> y=[6 2 5 10;3 5 2 6]';
>> subplot(2,2,4)
>> plot(x,y,'k:*')
5.6 交互式图形指令
ginput 是一个比较特殊的图形指令,用作获取图上数据,例如指令
>>[x,y]=ginput(6) % 从图形上选取6 个点
此时,ginput 指令将把当前图形调入前台,同时光标变为十字叉,移动光标,使交叉点落
目标点上,单击鼠标,即可获得该点数据。
>> fplot('humps',[0 1])
>> ginput(6)
阅读(203241) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。entropy 在数字图像处理中,运用MATLAB中的函数 可以计算 的熵或灰度出现的概率
238万源代码下载-
&文件名称: entropy
& & & & &&]
&&所属分类:
&&开发工具: matlab
&&文件大小: 3 KB
&&上传时间:
&&下载次数: 9
&&提 供 者:
&详细说明:在数字图像处理中,运用MATLAB中的函数entropy可以计算图像的熵或灰度出现的概率-The probability of occurrence in digital image processing, the use the MATLAB functions entropy can calculate the entropy of the image or grayscale
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&entropy.doc
&近期下载过的用户:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 计算图像的平均梯度,边缘强度,信息熵以及方差,图像可以是单波段或多波段图像。
&[] - 数字图像处理,输出数字图像的基本统计量:熵,灰度平均值,直方图等。
&[] - 给出了通过序列求近似熵的程序,其中N表示序列的长度
&[] - 计算图像的熵,简单的小程序,适合初学者。
&[] - 用于纹理特征的提取:采用灰度共生矩阵的方法求取纹理特征

我要回帖

更多关于 灰度共生矩阵 的文章

 

随机推荐