首页 > 其他分享 >Matlab : 数理统计

Matlab : 数理统计

时间:2023-09-30 12:32:47浏览次数:50  
标签:函数 插值 数理统计 Matlab 三次 xq 数据 spline

统计

描述性统计(Descriptive Statistics)

描述性统计主要研究数据的中心趋势(Central Tendency)和变异(Variation).

Matlab : 数理统计_插值

中心趋势(Central Tendency)

函数

作用

mean()

计算平均值

median()

计算中位数

mode()

计算众数

prctile()

计算百分位数

max()

计算最大值

min()

计算最小值

Matlab : 数理统计_数据_02

X = [1 3 5 5 5 5 7 9 9 9 10 13 14];

mean(X);			% 数据的平均值为 7.3077
median(X);			% 数据的中位数为 7
mode(X);			% 数据的众数为 5
prctile(X, 0);		% 数据的0%分位数为 0
prctile(X, 50);		% 数据的50%分位数为 7
prctile(X, 100);	% 数据的100%分位数为 14
prctile(X, 12.6);	% 数据的12.6%分位数为 3.2760

下列函数绘制统计图表:

函数

作用

bar()

绘制条形图

stem()

绘制针状图

area()

绘制填充图

boxplot()

绘制箱线图

x = 1:14;
freqy = [1 0 1 0 4 0 1 0 3 1 0 0 1 1];
subplot(1,3,1); bar(x,freqy); xlim([0 15]);
subplot(1,3,2); area(x,freqy); xlim([0 15]);
subplot(1,3,3); stem(x,freqy); xlim([0 15]);

Matlab : 数理统计_拟合_03

箱线图可以突出显示数据的四分位点.

Matlab : 数理统计_拟合_04

marks = [80 81 81 84 88 92 92 94 96 97];
boxplot(marks)
prctile(marks, [25 50 75])	% 得到 [81 90 94]

Matlab : 数理统计_插值_05

变异(Variation)

离散程度

函数

作用

std()

计算数据的标准差

var()

计算数据的方差

Matlab : 数理统计_插值_06

X = [1 3 5 5 5 5 7 9 9 9 10 13 14];

std(X);			% 得到 3.7944
var(X);			% 得到 14.3974
偏度(Skewness)

Matlab : 数理统计_数据_07

偏度反映数据的对称程度

  • 数据左偏时,其偏度小于0.
  • 数据完全对称时,其偏度等于0.
  • 数据右偏时,其偏度大于0.
X = randn([10 3]);		% 构造10*3的矩阵
X(X(:,1)<0, 1) = 0; 	% 将第一列数据右偏
X(X(:,3)>0, 3) = 0;		% 将第二列数据左偏
boxplot(X, {'Right-skewed', 'Symmetric', 'Left-skewed'});
skewness(X);	% 得到 [0.5162 -0.7539 -1.1234]

Matlab : 数理统计_拟合_08

峰度(Kurtosis)

峰度(Kurtosis)表征概率密度分布曲线在平均值处峰值的高低.直观来看,峰度反映了峰部的尖度.

Matlab : 数理统计_数据_09

统计推断(Inferential Statistics)

推论统计的核心即为假设检验.下列函数用于进行假设检验.

函数

作用

ttest()

进行T检验

ztest()

进行Z检验

ranksum()

进行秩和检验

signrank()

进行符号秩检验

load examgrades
x = grades(:,1);
y = grades(:,2);
[h,p] = ttest(x,y);

执行上述程序,得到[h p] = [0 0.9805],表示在默认显著性水平(5%)下我们没有理由拒绝xy同分布.

拟合

多项式拟合

一元多项式拟合:polyfit()

使用polyfit(x, y, n)函数对数据xy进行n次多项式拟合.

x = [-1.2 -0.5 0.3 0.9 1.8 2.6 3.0 3.5];
y = [-15.6 -8.5 2.2 4.5 6.6 8.2 8.9 10.0];
for i=1:3
    p = polyfit(x,y,i);	% 分别进行一次,二次,三次拟合
    xfit = x(1):0.1:x(end); yfit = polyval(p,xfit);
    subplot(1,3,i); plot(x,y,'ro',xfit,yfit); 
    legend('Data points','Fitted curve', 'Location', 'southeast');
end

Matlab : 数理统计_拟合_10

多元线性拟合:regress()

使用regress(y, X)函数对数据Xy进行多元线性回归.

load carsmall;
y = MPG; x1 = Weight; x2 = Horsepower;		% 导入数据集
X = [ones(length(x1),1) x1 x2];				% 构建增广X矩阵
b = regress(y,X);							% 进行线性回归

% 下面是绘图语句
x1fit = min(x1):100:max(x1); x2fit = min(x2):10:max(x2);
[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);
YFIT = b(1)+b(2)*X1FIT+b(3)*X2FIT;
scatter3(x1,x2,y,'filled'); hold on;
mesh(X1FIT,X2FIT,YFIT); hold off;
xlabel('Weight'); ylabel('Horsepower'); zlabel('MPG'); view(50,10);

Matlab : 数理统计_拟合_11

非线性拟合

对于非线性拟合,需要使用曲线拟合工具箱.在命令窗口输入cftool()打开曲线拟合工具箱.

Matlab : 数理统计_插值_12

插值

一维插值

下列函数均与一维插值有关:

函数

作用

interp1(x,v)interp1(x,v,xq)

线性插值

spline(x,v)spline(x,v,xq)

三次样条插值

pchip(x,v)pchip(x,v,xq)

三次Hermite插值

mkpp(breaks,coefs)

生成分段多项式

ppval(pp,xq)

计算分段多项式的插值结果

下面例子演示使用interp1(x, v, xq)进行线性插值和使用spline(x, v, xq)进行三次样条插值.各参数意义如下:

  • x,v: 待插值样本点.
  • xq: 查询点,函数返回在这些点处的插值结果.
% 构造数据
x = linspace(0, 2*pi, 40); x_m = x; x_m([11:13, 28:30]) = NaN; 
y_m = sin(x_m);
plot(x_m, y_m, 'ro', 'MarkerFaceColor', 'r'); hold on; 	

% 对数据进行线性插值
m_i = ~isnan(x_m);
y_i = interp1(x_m(m_i), y_m(m_i), x);
plot(x,y_i, '-b'); hold on;

% 对数据进行三次样条插值
m_i = ~isnan(x_m);
y_i = spline(x_m(m_i), y_m(m_i), x);
plot(x,y_i, '-g'); 

legend('Original', 'Linear', 'Spline');

Matlab : 数理统计_插值_13

三次样条插值的原理在每两个样本点之间用两两相切的三次函数曲线来插值.若spline()方法不指定查询点,则返回一个结构体,其中封装了插值三次函数的系数.使用mkpp(breaks, coefs)可以创建一个类似的结构体,使用ppval(pp, xq)可以计算查询点的插值结果.

Matlab : 数理统计_数据_14

使用pchip(x, y, xq)函数可以进行三次Hermite插值,该算法同样以三次函数进行插值,但得到的曲线更平缓.

x = -3:3; y = [-1 -1 -1 0 1 1 1]; xq1 = -3:.01:3;
p = pchip(x,y,xq1);
s = spline(x,y,xq1);
plot(x,y,'o',xq1,p,'-',xq1,s,'-.')
legend('Sample Points','pchip','spline','Location','SouthEast')

Matlab : 数理统计_拟合_15

二维插值

使用interp2()可以进行二维插值,向其method参数传入字符串可以指定插值算法.

方法

说明

连续性

'linear'

(默认)在查询点插入的值基于各维中邻点网格点处数值的线性插值.

C0

'spline'

在查询点插入的值基于各维中邻点网格点处数值的三次插值.插值基于使用非结终止条件的三次样条.

C2

'nearest'

在查询点插入的值是距样本网格点最近的值.

不连续

'cubic'

在查询点插入的值基于各维中邻点网格点处数值的三次插值.插值基于三次卷积.

C1

'makima'

修改后的Akima三次Hermite插值.在查询点插入的值基于次数最大为3的多项式的分段函数,使用各维中相邻网格点的值进行计算.为防过冲,已改进 Akima 公式.

C1

% 构建样本点
xx = -2:.5:2; yy = -2:.5:3; [x,y] = meshgrid(xx,yy); 
xx_i = -2:.1:2; yy_i = -2:.1:3; [x_i,y_i] = meshgrid(xx_i,yy_i);
z = x.*exp(-x.^2-y.^2);

% 线性插值
subplot(1, 2, 1); 
z_i = interp2(xx,yy,z,x_i,y_i);
surf(x_i,y_i,z_i); hold on;
plot3(x,y,z+0.01,'ok','MarkerFaceColor','r'); hold on;

% 三次插值
subplot(1, 2, 2); 
z_ic = interp2(xx,yy,z,x_i,y_i, 'spline');
surf(x_i,y_i,z_ic); hold on;
plot3(x,y,z+0.01,'ok','MarkerFaceColor','r'); hold on;

Matlab : 数理统计_拟合_16

标签:函数,插值,数理统计,Matlab,三次,xq,数据,spline
From: https://blog.51cto.com/u_16189732/7662858

相关文章

  • 正弦函数在matlab中实现
    %正弦函数在MATLAB中如何实现%1.sin(45°)注意:参数值需要用“弧度”去定义>>x=sin(45*pi/180);%2.MATLAB中注意:开方-sqrt(x),指数函数-exp(x)>>y=sqrt(2*exp(x+0.5)+1); %3.MATLAB中几元几次方程的写法:2x+3y-z=2%8x+2y+3z=4%45x+3y+9z=23<<A=[2,3,-1;8,2,3;45,3,9];%......
  • Matlab : 符号表达式
    MATLAB强大的符号运算基于符号运算工具箱,具体请见其 官方文档.创建符号变量创建符号数字使用sym函数可以创建符号数字.使用符号数字可以精确地保存无理数,不会产生误差.sym(1/3) %得到1/31/3 %得到0.3333将无理数保存为符号数字可以避免将其转换为浮点数的误差:使用符号数......
  • m基于16QAM调制的音频信号同步接收器matlab仿真,包括gardner符号同步,载波同步以及CMA
    1.算法仿真效果matlab2022a仿真结果如下:锁定过程的星座图变化情况:定时收敛曲线:载波同步收敛曲线:2.算法涉及理论知识概要基于16QAM(QuadratureAmplitudeModulation)调制的音频信号同步接收器是一个复杂但高效的通信系统。该系统主要涉及三个关键部分:Gardner符号同步、载波......
  • m基于16QAM调制的音频信号同步接收器matlab仿真,包括gardner符号同步,载波同步以及CMA
    1.算法仿真效果matlab2022a仿真结果如下: 锁定过程的星座图变化情况:    定时收敛曲线:   载波同步收敛曲线:   2.算法涉及理论知识概要         基于16QAM(QuadratureAmplitudeModulation)调制的音频信号同步接收器是一个复杂但高效的通信......
  • matlab使用分位数随机森林(QRF)回归树检测异常值|附代码数据
    全文链接:http://tecdat.cn/?p=22160 最近我们被客户要求撰写关于分位数随机森林(QRF)回归树的研究报告,包括一些图形和统计输出。这个例子展示了如何使用分位数随机林来检测异常值分位数随机林可以检测到与给定X的Y的条件分布有关的异常值。离群值是一些观测值,它的位置离数据集......
  • Matlab : 数值运算
    学习一门技术最好的方式就是阅读官方文档,可以查看MATLAB官方文档多项式的数值运算使用MATLAB表示多项式使用向量表示多项式在MATLAB中,多项式可以用向量表示,向量中的元素为多项式的系数(降幂排序):第一位为多项式最高次项系数,最后一位为常数项.例如多项式:f(x)=x3−2x......
  • Matlab 设计仿真CIC滤波器
    2023.09.26使用CIC滤波器用于降采样。同样的,CIC滤波器也适用于升采样。参考连接:[1]Matlab中CIC滤波器的应用_dsp.cicdecimator_张海军2013的博客-CSDN博客[2]Matlab中CIC滤波器的应用-知乎(zhihu.com)[3]CICfilter及其matlab实现-CSDN博客[4]【ljelly原创】Matla......
  • WOA-ELM分类预测 | Matlab 鲸鱼算法(WOA)优化极限学习机(ELM)的分类预测
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 基于图像形态学处理的目标几何形状检测算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述      目标几何形状检测是计算机视觉领域中的重要任务之一,旨在从图像中自动识别和定位不同的几何形状,例如矩形、圆形、三角形等。这些形状检测在许多领域中都具有广泛的应用,如工业自动化......
  • 基于Vgg16和Vgg19深度学习网络的步态识别系统matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本MATLAB2022A 3.算法理论概述       步态识别作为生物特征识别领域的一个重要分支,在人体运动分析、身份验证、健康监测等方面具有广泛的应用前景。步态能量图(GaitEnergyImage,简称GEI)是一种有效的步态表示方法,通过......