matlab 正态分布已知概率求x
时间: 2023-11-04 14:31:28 浏览: 38
根据正态分布的定义,可以使用标准正态分布表或MATLAB内置函数norminv来计算已知概率对应的x值。
方法一:使用标准正态分布表
步骤一:将已知概率转化为标准正态分布的z值,即z = (x - μ) / σ。
步骤二:查找标准正态分布表,找到对应z值下的概率。
步骤三:根据标准正态分布表,反推出对应概率下的z值,即z0。
步骤四:将z0转化为对应的x值,即x = μ + σ * z0。
示例代码:
假设已知正态分布的均值为μ=2,标准差为σ=1,要求求出累积概率为p=0.8时对应的x值。
% 步骤一:计算z值
z = norminv(0.8, 0, 1); % z = 0.8416
% 步骤四:计算x值
x = 2 + 1 * z; % x = 2.8416
方法二:使用MATLAB内置函数norminv
MATLAB内置函数norminv可以直接计算已知概率对应的x值,不需要手动查表。
示例代码:
假设已知正态分布的均值为μ=2,标准差为σ=1,要求求出累积概率为p=0.8时对应的x值。
x = norminv(0.8, 2, 1); % x = 2.8416
其中,0.8为累积概率,2为均值,1为标准差。
相关问题
已知x,y。用matlab拟合正态分布曲线
可以使用MATLAB中的`fitdist()`函数来拟合正态分布曲线,具体步骤如下:
1. 准备数据,将x和y组成一个矩阵。
2. 使用`fitdist()`函数,选择正态分布模型,设置参数为`'Normal'`。其中,x和y分别作为正态分布的均值和标准差的初始值,可以通过`mean()`和`std()`函数获取。
3. 将拟合结果绘制成曲线,使用`pdf()`函数来计算概率密度函数值,并使用`plot()`函数绘制出曲线。
下面是一个简单的示例代码:
```matlab
% 准备数据
x = [1, 2, 3, 4, 5];
y = [0.1, 0.3, 0.4, 0.15, 0.05];
data = [x', y'];
% 拟合正态分布曲线
mu = mean(x); % 正态分布的均值
sigma = std(x); % 正态分布的标准差
pd = fitdist(data, 'Normal', 'Start', [mu, sigma]);
% 绘制概率密度函数曲线
x_vals = linspace(min(x), max(x), 100);
y_vals = pdf(pd, x_vals);
plot(x_vals, y_vals);
```
运行上述代码,就可以得到一条拟合好的正态分布曲线。
已知x,y。用matlab拟合对数正态分布曲线
可以使用MATLAB中的`fitdist()`函数来拟合对数正态分布曲线,具体步骤如下:
1. 准备数据,将x和y组成一个矩阵。
2. 使用`fitdist()`函数,选择对数正态分布模型,设置参数为`'Lognormal'`。其中,x和y分别作为对数正态分布的均值和标准差的初始值,可以通过`mean()`和`std()`函数获取。
3. 将拟合结果绘制成曲线,使用`pdf()`函数来计算概率密度函数值,并使用`plot()`函数绘制出曲线。
下面是一个简单的示例代码:
```matlab
% 准备数据
x = [1, 2, 3, 4, 5];
y = [0.1, 0.3, 0.4, 0.15, 0.05];
data = [x', y'];
% 拟合对数正态分布曲线
mu = mean(log(x)); % 对数正态分布的均值
sigma = std(log(x)); % 对数正态分布的标准差
pd = fitdist(log(data), 'Lognormal', 'Start', [mu, sigma]);
% 绘制概率密度函数曲线
x_vals = linspace(min(x), max(x), 100);
y_vals = pdf(pd, log(x_vals));
plot(x_vals, y_vals);
```
运行上述代码,就可以得到一条拟合好的对数正态分布曲线。