[matlab] matlab 画直方图

本文提供了一段Matlab代码用于绘制直方图,并进行了详细的数据分析过程,包括最大值与最小值的计算、数据区间的划分、频率的计算与标准化等。
 
x=【1.47
1.62
1.53
1.57
1.63
1.47
1.63
1.5
1.53
1.6
1.56
1.47
1.6
1.5
1.63
1.62
1.53
1.5
1.59
1.47
1.47
1.69
1.5
1.47
1.56
1.53
1.56
1.47
1.5
1.5
1.48
1.53
1.6
1.47
1.53
1.54
1.56
1.5
1.53
1.47
1.56
1.53
1.54
1.53
1.59
1.56
1.57
1.53
1.5
1.56
1.56
1.57
1.59
1.54
1.56
1.5
1.5
1.56
1.58
1.56
1.54
1.53
1.5
1.53
1.47
1.57
1.56
1.53
1.56
1.57
1.54
1.54
1.5
1.56
1.53
1.6
1.53
1.59
1.56
1.48
1.47
1.53
1.53
1.54
1.53
1.53
1.56
1.55
1.5
1.59
1.53
1.54
1.48
1.54
1.53
1.54
1.47
1.53
1.58
1.47
1.59
1.56
1.63
1.57
1.5
1.56
1.53
1.5
1.52
1.55
1.54
1.6
1.53
1.53
1.54
1.54
1.47
1.52
1.53
1.57
1.49
1.56
1.53
1.53
1.5
1.51
1.57
1.54
1.54
1.54
1.57
1.58
1.56
1.57
1.5
1.53
1.51
1.58
1.54
1.56
1.53
1.48
1.59
1.51
1.57
1.53
1.51
1.5
1.54
1.5
1.54
1.56
1.53
1.63
1.53
1.57
1.5
1.57
1.56
1.56
1.6
1.5
1.5
1.51
1.6
1.5
1.51
1.53
1.54
1.5
1.53
1.52
1.6
1.53
1.56
1.5
1.56
1.57
1.56
1.53
1.56
1.57
1.53
1.46
1.53
1.47
1.51
1.53
1.6
1.56
1.56
1.6
1.54
1.53
1.53
1.5
1.53
1.56
1.62
1.53
】
这里有200个测量值,取最大和最小的之差,平均分成9个区间,取每个区间内测量值的个数作为频数,频数除以总数也就是200作为相对频数,相对频数为纵坐标,数据值为横坐标,画直方图,用matlab!
请帮我编写程序,非常感谢!
最佳答案
[a,b]=hist(x,9); 
a=a/length(x); 
bar(b,a);
Matlab 2014版本中,有多种方法可以绘制直方图。 ### 使用`hist`函数 `hist`函数可用于绘制直方图,其常见调用格式有`n = hist(Y)`和`n = hist(Y, nbins)`。`n = hist(Y)`会将向量`Y`中的元素分配到10个等间距的容器中,并返回每个容器中的元素数量;`n = hist(Y, nbins)`则允许指定容器的数量`nbins` [^1]。 示例代码如下: ```matlab % 生成一些随机数据 Y = randn(1000,1); % 绘制直方图 n = hist(Y); ``` ### 自定义函数绘制图像直方图 可通过自定义函数结合`imread`读取图像并绘制其直方图。例如,以下代码可以依次读入图像并调用自定义函数`myDrawHistogram`绘制直方图并添加标题: ```matlab clear;clc;close all; % 依次读入图像,不在同一目录下可以用绝对路径 p1 = imread("D:\matlab\image\Lena.tif"); p2 = imread("D:\matlab\image\Baboon.tif"); p3 = imread("D:\matlab\image\Peppers.tif"); % 调用函数一次输出图像的直方图,并加上标题 figure(1);myDrawHistogram(p1);title("lena"); figure(2);myDrawHistogram(p2);title("Baboon"); figure(3);myDrawHistogram(p3);title("Peppers"); ``` 这里需要确保`myDrawHistogram`函数已经被正确定义 [^2]。 ### 使用`imhist`函数绘制图像直方图 `imhist`函数可用于绘制图像的直方图,还能得到每一个灰度级对应的像素点个数组成的向量。 示例代码如下: ```matlab img = imread('e.jpg'); figure; imshow(img); % 展示原始图像 figure; subplot(121); imhist(img); % 细杆状图 subplot(122); imhist(img, 50); % 指定容器数量为50 ``` 还可以将0 - 255的灰度值进行划分,结合`bar`、`stem`、`plot`函数绘制不同样式的图: ```matlab h = imhist(img, 20); % 将0 - 255的灰度值分成20份 horz = linspace(0, 255, 20); figure; bar(horz, h); % 绘制杆状图 figure; stem(horz, h, 'fill'); % 绘制折线图 figure; plot(horz, h, 'b-o'); ``` [^3] ### 根据数值绘制直方图 可以使用`histogram`函数根据数值(或统计值)绘制直方图。 示例代码如下: ```matlab edges = [0 - 0.5:7 + 0.5]; counts = [508 821 898 892 552 181 159 85]; figure; histogram('BinEdges', edges, 'BinCounts', counts, 'Normalization', 'probability'); box off; ``` [^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值