Matlab绘图------特殊图形------直⽅图
⼀、hist函数
(1)hist(x),其中x是⼀维向量,该函数是将x的最⼩值与最⼤值之间的区间等分为10份,输出的直⽅图横坐标为x,纵坐标为相应区间数值的个数。相当于hist(x,10)。从下图可以测试,可以看出两种⽤法是相同的。
(2)[a,b] = hist(x,n):这⾥是将区间分为n份,横坐标是x,纵坐标是个数。a为落在该区间的个数,b为该区间中⼼线位置坐标。其中,[a,b] = hist(x,6)不画图,只输出结果;hist(x,6)不输出结果,只画图。
下⾯演⽰⼀下:
[a,b]=hist(x,5)
a =
3 0
4 3 1
b =
0.1440 0.3120 0.4800 0.6480 0.8160
当输⼊:hist(x,5),得到下⾯的图表:
⼆、bar函数
bar函数画直⽅图有四种可⽤的形式:
bar,bar3,barh 和bar3h,其中bar 和bar3 分别⽤来绘制⼆维和三维竖直⽅图,barh 和b
ar3h 分别⽤来绘制⼆维和三维⽔平直⽅图,调⽤格式如下:
(1)bar(y):其中y为矩阵,矩阵有⼏⾏就有⼏组,⼏列就表⽰每个⼩组内有⼏个分组;⽰例如下:
y=[5 4 3 2 9;4 8 7 2 7;1 9 5 7 3];
>> bar(y)
可以看到,y为3⾏5列的矩阵,则应⽤bar函数后得到的直⽅图是分成了3组5列;所以bar(y)得到的图像就是按照y的⾏和列进⾏绘制的;(2)bar(x,y)函数:
其中x 必须单调递增或递减,y 为n*m的矩阵,可视为结果为m组,每
组n个垂直柱,也就是把y 的⾏画在⼀起,同⼀列的数据⽤相同的颜⾊表⽰;
可以看到,bar(x,y)就是将bar(y)进⾏了扩展,但是x必须是单调的,且x的元素个数必须和y的⾏数匹配,如下⾯就出现了错误:
y=[5 3 2 9;4 7 2 7;1 5 7 3];
>> x=[3 4 5];批量删除qq好友
>> bar(x,y)
>> x=[3 4 5 6];
>> bar(x,y)
错误使⽤ bar (line 168)
X 的长度必须与 Y 的⾏数匹配。
(3)bar(x,y,width) (或者是bar(y,width))指定每个直⽅条的宽度,如width>1,则直⽅条会重
叠,默认值为width=0.8;
y=[5 3 2 9;4 7 2 7;1 5 7 3];
x=[3 4 5];
>> bar(x,y,1.2)
得到了下图:
有限空间作业证
(4)ba(...,’grouped’) 使同⼀组直⽅条紧紧靠在⼀起;
(5) bar(…,’stack’) 把同⼀组数据描述在⼀个直⽅条上。
如下列所⽰:
输⼊:
y=[5 3 2 9;4 7 2 7;1 5 7 3];
x=[3 4 5];香菇油菜怎么做
bar(y,'stack');
得到:
总结:可以看到,bar(y)和bar(x,y)两个⽤法是⼀样的,可以直接使⽤bar(y),不必使⽤bar(x,y)这⼀⿇烦⽤法;
手机拍摄技巧视频教程但是有⼀个是需要注意的:当对横坐标x没有要求时,可以直接使⽤bar(y);⽽如果涉及到修改x轴,那么就需要使⽤bar(x,y)
另外,对⽐⼀下hist()函数和bar()函数,可以发现,hist()函数使⽤中,需要对横坐标进⾏等分,即分组操作;⽽bar()函数直接按照y的列数确定横坐标的分组,y有多少列,那么横坐标就分成⼏个组,所以猜想:当x横坐标指定为字符类型时,怎么操作呢?
乡土中国在线阅读
x=['⼩明','⼩强','⼩⿊'];
>> y=[5 3 2 9;4 7 2 7;1 5 7 3];
那么绘制的时候会出现什么问题呢:
bar(x,y)后:
得到:错误使⽤ bar (line 41)
输⼊参数的数⽬不⾜。
那么怎么才能达到想要的效果呢?那么这就涉及到了数据类型之间的相互转换了。
在上⾯的⼀篇⽂章中,就细细的讲述了Matlab中数据类型的细节
那么本⽂主要是讲述整理数据类型之间的类型转换:
(1)数值型转换成布尔类型
数值型数据转换成逻辑型的数据⼀般遵循以下规则:⾮0的数值型数据转换成逻辑真,即1;等于0的数值转换成逻辑假,即0。主要使⽤的是logical()函数:
num=12;
>> n=logical(num)
n =
logical
1
(2)布尔值转换为数值型
两种⽅法
强制转换:double(x)
⾃动转换:当逻辑值参与数学运算时会⾃动转为数值型
⽐如下⾯的例⼦:
n=logical(12);
>> num=double(n);
>> n
n =
logical
赞美学校的作文1
>> num
num =
1
(3)字符型转换为数值型
a='hello';
>> b=double(a)
b =
104 101 108 108 111
(4)字符数组转换成字符串
使⽤cellstr函数
a='hello';
>> b=cellstr(a)
b =
1×1 cell 数组
{'hello'}
(5)⽤字符串作为变量名
使⽤eval()函数,可以将字符串转换成变量名,如下⾯所⽰:
str_var = 'varNumber';
eval( [str_var, '= 20']);
varNumber =
20
上例中,⾸先定义了⼀个变量str_var,变量值为‘varNumber’,然后使⽤eval函数将str_var的变量值转换成了⼀个新的变量,其变量值为20,所以可以在⼯作空间内看到多了⼀个变量varNumber山清水秀
(6)变量名转换为字符串
9月10日是什么节日这⾥需要⽤到inputname()函数,但是直接想(5)中使⽤inputname 得到下⾯的情况:
所以,这⾥需要构造⼀个函数,这可以以下的连接中找到:
那么,到这⾥发现还是不能完成之前的设想,那么到底如何才能使得横坐标设置为汉字类的形式呢?就如下⾯的展⽰的那样:
那么,下⾯就开始进⾏探索:
x=2000:2015;
>> y=sin(x);
>> plot(x,y,'-*')
>> t(gca,'xTick',[2000:3:2015])
>> t(gca,'xTicklabel',{'2000年','2003年','2006年','2009年','2012年','2015年'});
那么,如何将下⾯的这幅图下标1 2 3换成 ⼩明 ⼩红 ⼩⿊ 呢?
只需要⼀个简单的操作即可:
x=[1 2 3];
>> y=[2 4 5 9 5;12 23 5 13 10;11 9 18 16 12];
>> bar(x,y)
>> t(gca,'xTicklabel',{'⼩明','⼩红','⼩⿊'})
最终得到了下⾯的图像:
⼤功告成,⾄此关于绘制直⽅图的两个函数hist函数和bar函数,以及⼀些零碎的知识点已经全部完成,下⼀步将进⾏更加美观⾼⼤上的位图和其他⾼深的图像前进,加油!