matlab正态分布拟合数据画图

1

matlab正态分布拟合数据画图_第1张图片

clear

clc

close all

% 生成风速数据

wind_speed_data = randn(1000, 1) * 5 + 10; % 生成均值为10,标准差为5的正态分布数据

% 计算概率分布直方图

hist_bins = linspace(min(wind_speed_data), max(wind_speed_data), 20);

hist_values = hist(wind_speed_data, hist_bins) / numel(wind_speed_data);

% 计算累积分布函数

cdf_values = cumsum(hist_values);

% 绘制概率分布直方图和累积分布图

figure;

% 绘制概率分布直方图

subplot(1, 2, 1);

bar(hist_bins, hist_values, 'hist');

title('风速概率分布直方图');

xlabel('风速');

ylabel('概率密度');

% 添加正态分布拟合曲线

mu = mean(wind_speed_data);

sigma = std(wind_speed_data);

pdf_values = normpdf(hist_bins, mu, sigma);

hold on;

plot(hist_bins, pdf_values, 'r-', 'LineWidth', 2);

legend('概率分布直方图', '正态分布拟合');

hold off;

% 绘制累积分布图

subplot(1, 2, 2);

plot(hist_bins, cdf_values, 'b-', 'LineWidth', 2);

title('风速累积分布图');

xlabel('风速');

ylabel('累积概率');

grid on;

2

clear

clc

close all

% 随机生成一些数据

data = randn(1000, 1) * 2 + 5; % 生成1000个均值为5,标准差为2的随机数

% 使用正态分布拟合工具进行拟合

pd = fitdist(data, 'Normal');

% 绘制直方图和拟合曲线

figure;

histfit(data, 20, 'normal'); % 20表示直方图的条数

title('正态分布拟合');

xlabel('数据值');

ylabel('频率');

% 显示拟合参数

meanValue = pd.mu;

stdValue = pd.sigma;

legend(['拟合曲线 (\mu = ' num2str(meanValue) ', \sigma = ' num2str(stdValue) ')']);

3

clear
clc
close all

% 生成0到20之间的随机数据
data = 20 * rand(1000, 1);

% 用正态分布函数进行拟合
[mu, sigma] = normfit(data);

% 可视化原始数据的直方图和正态分布的拟合结果
figure;

% 绘制原始数据的直方图
subplot(1, 2, 1);
hist(data, 20);
title('原始数据直方图');
xlabel('数值');
ylabel('频率');

% 绘制正态分布的拟合结果
subplot(1, 2, 2);
histfit(data, 20, 'normal');
title('正态分布拟合');
xlabel('数值');
ylabel('频率');

% 显示拟合参数
fprintf('正态分布拟合参数:\n');
fprintf('均值 (mu): %.4f\n', mu);
fprintf('标准差 (sigma): %.4f\n', sigma);

你可能感兴趣的:(matlab)