matlab直方图程序怎么写

时间:2025-01-25 20:20:00 单机游戏

在MATLAB中绘制直方图有多种方法,以下是几种常用的方法:

方法一:使用库函数 `imhist`

```matlab

% 读取图像

B = imread('cameraman.tif');

% 获取图像尺寸

[x, y] = size(B);

% 计算灰度直方图

number = zeros(x, y);

for i = 1:x

for j = 1:y

rank = B(i, j);

number(rank + 1) = number(rank + 1) + 1;

end

end

% 绘制直方图

subplot(1, 2, 1);

stem(number, '.');

title('库函数绘制的直方图');

```

方法二:使用内置函数 `bar`

```matlab

% 随机生成一组数据

a = round(10 * rand(5, 1));

% 绘制直方图

bar(a, 0.5, 'r'); % 设置宽度为0.5,颜色为红色

% 在直方图上方显示数值

for i = 1:length(a)

text(i, a(i), num2str(a(i)), 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'center', 'FontSize', 9, 'color', 'r', 'FontWeight', 'bold');

end

```

方法三:使用 `hist` 函数

```matlab

% 随机生成一组数据

data = [3, 7, 5, 2; 4, 3, 2, 9; 6, 6, 1, 4];

% 绘制直方图

b = bar(data);

% 设置条形颜色

set(b, 'FaceVertexCData', [1; 1; 1; 1; 2; 2; 2; 2; 3; 3; 3; 3; 4; 4; 4; 4]);

```

方法四:使用 `histfit` 函数

```matlab

% 生成随机数组

aa = randn(1000, 1);

% 绘制直方图

hist(aa);

% 添加拟合曲线

histfit(aa, 100);

```

方法五:自定义直方图函数

```matlab

function p = custom_hist(I, n_bins)

% 计算灰度图象的直方图数据

L = 256;

Ps = zeros(L, 1);

nk = zeros(L, 1);

[row, col] = size(I);

n = row * col;

for i = 1:row

for j = 1:col

num = double(I(i, j)) + 1;

nk(num) = nk(num) + 1;

end

end

% 计算直方图概率估计

for i = 1:L

Ps(i) = nk(i) / n;

end

% 绘制直方图

figure;

subplot(3, 1, 1);

imshow(I);

title('原图');

subplot(3, 1, 2);

plot(nk);

title('直方图(nk)');

subplot(3, 1, 3);

plot(Ps);

title('直方图(Ps)');

end

```

这些方法可以根据具体需求选择使用,例如绘制灰度直方图、彩色直方图、带拟合曲线的直方图等。希望这些示例代码对你有所帮助!