Matlab绘制特殊图形------直方图
除了可以使用Excel绘制直方图之外,还可以使用Matlab绘制直方图,同时Matlab绘制的直方图更为美观,以下是使用Matlab 绘制直方图的使用方法。
一、函数hist()
该函数有两种使用方法
(1)hist(x)
其中x为一维向量,这种用法是将x中的最小值和最大值之间的区间等分成10等份,输出的直方图横坐标是x值,纵坐标是该值的个数,可以理解为下面中的hist(x,10)。
比如x=[1 2 3 4 6 5 4 3 5 6 9 0 8 1 2 4 3 5 6 10];
>> hist(x)
显示结果为:
(2)函数格式为 [a,b]=hist(x,n)
其中x是一维向量,函数功能是将x中的最小和最大值之间的区间等分n份,横坐标是x值,纵坐标是该值的个数。返回的a是落在该区间内的个数,b是该区间的中心线位置坐标。
比如:
num = 200;
data = randn(1,num);
m =10;
[a,b]=hist(data,m)
a =
2 9 26 30 55 43 24 4 5 2
b =
-2.6182 -1.9659 -1.3136 -0.6613 -0.0091 0.6432 1.2955 1.9477 2.6000 3.2523
运行hist(data,m)之后得到的直方图如下所示:
可以看到,第二种用法是第一种用法的一般性,即第一种用法hist()函数只有一个参数时,默认将该一维向量从最小值到最大值均分为10份。
二、函数bar()
对于bar函数的使用一般格式如下:bar(x,y) 其中x必须是严格递增的且一维向量x和一维向量y长度相同。以一维向量x的值为x坐标,对应的y为y坐标画直方图。
例如
x=0:0.2:10;
>> y=sin(x);
>> bar(x,y)
三、函数histgram()
(1) X = randn(1000,1); n = 15; h = histogram(x,n)%与hist相同
(2)两个直方图叠加
x = randn(3000,1);y = 1 + randn(6000,1);
h1 = histogram(x);
hold on;
h2 = histogram(y);
(3)相比hist函数只能显示频数,histogram可以显示频率
h1.Normalization = 'probability';h1.BinWidth = 0.25;
h2.Normalization = 'probability';h2.BinWidth = 0.25;
(4)密度拟合的例子
x = 2*randn(5000,1) + 4;
histogram(x,'Normalization','pdf')
hold on
y = -5:0.1:15;
mu = 5;
sigma = 2;
f = exp(-(y-mu).^2./(2*sigma^2))./(sigma*sqrt(2*pi));
plot(y,f,'LineWidth',1.5)