数学建模是用数学方法解决各种实际问题的桥梁,已经渗透到各个领域,发挥着越来越重要的作用。面对自然科学和工程应用中的问题,大多数人无从下手,但也有人能在短时间内给出切实可行的解决方案,而区别往往在于他们掌握数学知识的能力不同。现代计算机技术的应用不仅减少了计算误差,而且加强了数学使用者解决问题的能力。MATLAB是一种常用的数据处理软件。为了更好的应用MATLAB软件,我将整理好的MATLAB函数分享在今日头条上,以利他人。
MATLAB提供的很多数据分析和统计函数都是面向列的,即矩阵中的每一列代表一个变量的多个观测值,列数对应变量的个数,行数对应测量点的个数。
Max和min函数可以找到数据的最大值和最小值,mean和std函数可以找到数据的平均值和标准差,sum和prod函数可以找到数据元素的和与积。例如,可以分析MATLAB中包含的某个城市的24小时交通数据count.dat:
加载计数. dat
mx =最大值(计数)
mx = 114 145 257
mu =平均值(计数)
mu = 32.0000 46.5417 65.5833
西格玛=标准值(计数)
西格玛= 25.3703 41.4057 68.0281
对于某些函数,也可以给出位置,比如在求最小值的同时,可以得到最小值的位置(行号):
[mx,indx]=最小值(计数)
mx = 7 9 7
indx = 2 23 24
1、协方差和相关系数
Cov函数可以求单个变量的协方差,而corrcoef函数可以求两个变量之间的相关系数,例如:
cv=cov(计数)
cv = 1.0e+003 *
0.6437 0.9802 1.6567
0.9802 1.7144 2.6908
1.6567 2.6908 4.6278
cr=corrcoef(计数)
cr =
1.0000 0.9331 0.9599
0.9331 1.0000 0.9553
0.9599 0.9553 1.0000
2.数据预处理
在MATLAB中遇到越界数据时,用NaN(非数值)表示,在任何运算中,只要包含NaN,就会传递给结果。因此,在分析数据之前,应该消除数据中出现的NaN。例如:
a =[1 2 3;5南8;7 4 2];
总和(a)
安= 13南13
有四种方法可以删除向量x中的NaN元素:
(1)I = find(~ isnan(x));x=x(i).
(2) x=x(find(~isnan(x))).
(3) x=x(~isnan(x)).
(4) x(isnan(x))=[ ].
删除矩阵X中NaN所在的行,输入。
X(any(isnan(X)& # 39;),:)=[ ];
经过这种预处理后,可以对数据进行分析和统计运算。
3.回归和曲线拟合
对给定的数据进行拟合,可以采用多项式回归或者其他信号回归,其基本原理是最小二乘法,在MATLAB中很容易实现。
例1:假设通过测量得到一组时间t和变量y的数据:
t =[0 . 3 . 8 1.1 1.6 2.3];
y =[0.5 0.82 1.14 1.25 1.35 1.40];
通过回归,可以得到两种不同的结果。MATLAB程序如下:
t =[0 . 3 . 8 1.1 1.6 2.3]& # 39;;
y =[. 5 . 82 1.14 1.25 1.35 1.40]& # 39;;
x1 =[ones(size(t))t t.^2];
a = X1 \ y;
X2 =[ones(size(t))exp(–t)t . * exp(–t)];
b = X2 \ y;
t =[0:. 1:2.5]& # 39;;
y1 =[ones(size(t))t t.^2]*a;
y2 =[ones(size(T))exp(-T)T . * exp(-T)]* b;
图(1)
子情节(1,2,1)
plot(T,Y1,& # 39;-',t,y,& # 39;o & # 39),网格打开
标题(& # 39;多项式回归& # 39;)
次要情节(1,2,2)
plot(T,Y2,& # 39;-',t,y,& # 39;o & # 39),网格打开
标题(& # 39;指数函数回归& # 39;)
示例2已知变量Y与x1和x2相关,并且如下测量一组数据
x1 =[. 2 . 5 . 6 . 8 1.0 1.1]& # 39;;
x2 =[. 1 . 3 . 4 . 9 1.1 1.4]& # 39;;
y =[. 17 . 26 . 28 . 23 . 27 . 24]& # 39;;
使用适合,有
x1 =[. 2 . 5 . 6 . 8 1.0 1.1]& # 39;;
x2 =[. 1 . 3 . 4 . 9 1.1 1.4]& # 39;;
y =[. 17 . 26 . 28 . 23 . 27 . 24]& # 39;;
x =[ones(size(x1))x1 x2];
a=X\y
a = 0.1018 0.4844 0.2847
因此,数据的拟合模型为
y = 0.1018+0.4844 x1 0.2487 x2
4.傅立叶分析和FFT
利用MATLAB提供的FFT函数可以方便地计算信号的傅里叶变换,从而在频域对信号进行分析。
示例1:混频信号的分量分析。有一个信号X,它是三个不同频率的正弦信号的混合。通过获得信号的DFT,确定信号的频率和强度关系。该过程如下:
t = 0:1/119:1;
x = 5 * sin(2 * pi * 20 * t)+3 * sin(2 * pi * 30 * t)+sin(2 * pi * 45 * t);
y = FFT(x);
m = ABS(y);
f =(0:length(y)-1)& # 39;* 119/长度(y);
图(1)
子情节(2,1,1),情节(t,x),网格打开
标题(& # 39;多频混合信号& # 39;)
y label(& # 39;输入\ itx & # 39),xlabel(& # 39;时间& # 39;)
次要情节(2,1,2),情节(f,m)
y label(& # 39;腹肌。量级& # 39;),网格打开
xlabel(& # 39;频率(赫兹)& # 39;)
例2:信号传输过程中,由于信道或环境的影响,在接收端得到噪声环境中的信号。我们使用FFT函数对这个信号进行傅立叶分析,从而确定信号的频率。该过程如下:
t = 0:1/199:1;
x = sin(2 * pi * 50 * t)+1.2 * randn(size(t));信号噪声百分比
y = FFT(x);
m = ABS(y);
f =(0:length(y)-1)& # 39;* 199/长度(y);
图(1)
子情节(2,1,1),情节(t,x),网格打开
标题(& # 39;信号检测& # 39;)
y label(& # 39;输入\ itx & # 39),xlabel(& # 39;时间& # 39;)
次要情节(2,1,2),情节(f,m)
y label(& # 39;腹肌。量级& # 39;),网格打开
xlabel(& # 39;频率(赫兹)& # 39;)
例3:天文学家记录了过去300年太阳黑子的活动。我们对这组数据进行了傅立叶分析,从而得出了太阳黑子的活动周期。MATLAB程序如下:
加载黑子. dat
年份=黑子(:,1);
wolfer =黑子(:,2);
图(1)
子情节(2,1,1)
情节(年,沃尔弗)
标题(& # 39;原始数据& # 39;)
y = FFT(wolfer);
n =长度(Y);
y(1)=[];
power=abs(Y(1:N/2))。^2;
奈奎斯特= 1/2;
freq =(1:N/2)/(N/2)*奈奎斯特;
周期=1。/freq;
次要情节(2,1,2)
绘图(周期、功率)
标题(& # 39;功率谱& # 39;),网格打开
坐标轴([0 40 0 2e7])
亲爱的读者,感谢您的阅读。如果你对工程应用中的数学问题感兴趣,请关注我。让我们一起讨论,一起成长!!!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。