收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

MATLAB应用——数据分析与统计

[复制链接]
) O$ k" R9 r" L/ R
: E4 o/ A( [ f% c1 d0 t

数学建模是用数学方法解决各种实际问题的桥梁,它已经渗透到各个领域,而且发挥出越来越重要的作用。面对自然科学和工程应用中的难题,大部分人无从入手,而个别人却能短时间内给出切实可行的解决方案,其差别往往在于驾驭数学知识的能力不同。现代计算机技术的应用不仅减少了计算错误,而且加强了数学应用者解决问题的能力。MATLAB是一款常用的数据处理软件,为了更好的应用MATLAB软件,我将整理好的MATLAB函数分享到今日头条上,以利己利人查阅。

, h. n9 k& e: u6 O) [

MATLAB提供的很多数据分析与统计函数都是面向列的,即矩阵中的每一列代表一个变量的多个观测值,其列数对应于变量数,行数对应于测量点数。

7 A$ Z' p! m( h% w2 P

max和min函数可求出数据的最大值和最小值,mean和std函数可求出数据的均值和标准差,sum和prod函数可求出数据元素和与数据元素积。例如,对MATLAB内含的某城市24小时的车流量数据count.dat可作分析:

, {' P2 [7 {2 g% X/ }

load count.dat

: [9 ]. `4 r2 }/ `( O5 l# h" H# B

mx=max(count)

% H. G5 B* z* B0 ~7 T7 h

mx = 114 145 257

: _, @6 |6 \- ]1 m" h+ [

mu=mean(count)

( ]( ~5 G* x2 Y/ y' ^# \: S

mu = 32.0000 46.5417 65.5833

! ?2 Y8 R- b. J' ~4 G: f

sigma=std(count)

! M. c) Y4 \7 }+ ?" e

sigma = 25.3703 41.4057 68.0281

+ j3 L+ b" O0 a/ W, ?

对有些函数还可给出位置,例如,在求出最小值的同时,可得到最小值所在的位置(行号):

8 q8 K j& w3 @ n0 _" U) h7 G

[mx,indx]=min(count)

" Z6 i" k# I+ S5 |+ _1 Q

mx = 7 9 7

9 R# a; g5 a; T9 D) e5 [

indx = 2 23 24

: |. g2 W. ]/ s& |3 c4 B$ [/ K" b

1、协方差和相关系数

2 [+ n5 ]& g( m& g

cov函数可以求出单个变量的协方差,而corrcoef函数可求出两个变量之间的相关系数,例如:

" L& J5 f3 I5 d, a

cv=cov(count)

7 @/ ]9 ?& _3 w" K# d3 f! y

cv = 1.0e+003 *

3 [; L P8 W% ^0 R I

0.6437 0.9802 1.6567

/ a* |8 ^2 T! }# s

0.9802 1.7144 2.6908

- f3 A; t- p4 S6 ? Z5 F

1.6567 2.6908 4.6278

; M/ H7 o- J) x- v) [) [( n7 H

cr=corrcoef(count)

2 S' X& @9 ]4 k* x4 Q4 N

cr =

. U, j/ m' P/ f" Y$ D- w7 p$ D, i

1.0000 0.9331 0.9599

6 R2 V$ S' d3 `. ^! V: r7 ~

0.9331 1.0000 0.9553

' t, j) D, y: P0 U( ]" r$ |

0.9599 0.9553 1.0000

8 w7 Q- K9 Q; i4 H* E( E

2、数据预处理

5 T) }+ \+ h+ g$ |

在MATLAB中遇到超出范围的数据时均用NaN (非数值) 表示,而且在任何运算中,只要包含NaN,就将它传递到结果中,因此在对数据进行分析前,应对数据中出现的NaN作剔除处理。例如:

G2 J j6 W9 D5 F

a=[1 2 3;5 NaN 8;7 4 2];

! t* Z1 P" Y$ e) ?( t1 P) J

sum(a)

. a7 r1 K+ p( ~7 A' B6 ^0 `: V0 ]

ans = 13 NaN 13

- a5 S5 g8 u, U9 |

在矢量x中删除NaN元素,可有下列四种方法:

, M" A. P' J, ?+ [! ]

(1)  i=find(~isnan(x));x=x(i)。

$ P/ U- ?2 t/ G7 ?' J( X9 e$ |

(2)  x=x(find(~isnan(x)))。

- m K& E7 z) w0 J o! c6 J

(3)  x=x(~isnan(x))。

! i: S4 H7 s7 b0 d! u f

(4)  x(isnan(x))=[ ]。

6 a: [; c) V3 [

在矩阵X中删除NaN所在的行,可输入

5 V H: c0 x2 t/ B% X

X(any(isnan(X)),:)=[ ];

3 @- J+ U/ R$ _- H" j

经过这种预处理后的数据,可进行各种分析和统计操作。

3 W! _) i i0 u& ^0 d1 g3 N

3、回归和曲线拟合

1 @. n: c; C, \' j1 u

对给定的数据进行拟合,可采用多项式回归,也可采用其它信号形式的回归,其基本原理是最小二乘法,这一功能实现在MATLAB中显得轻而易举。

7 k; u; P9 i, Q1 G

例1:设通过测量得到一组时间t与变量y的数据:

6 @7 ^/ U) T3 O! Q

t=[0 .3 .8 1.1 1.6 2.3];

/ l7 E" C& j9 M d0 P9 o" a( S

y=[0.5 0.82 1.14 1.25 1.35 1.40];

+ {, R) P6 `7 Y$ }
2 Z3 x/ Q; [9 a! M3 Y/ Z' x3 \

进行回归,可得到两种不同的结果。MATLAB程序如下:

+ a$ e9 c, M m

t=[0 .3 .8 1.1 1.6 2.3];

0 @& y: E+ x2 F

y=[.5 .82 1.14 1.25 1.35 1.40];

+ p* J7 t" Z K

X1=[ones(size(t)) t t.^2];

0 M$ p a4 q1 J/ u5 O) a

a=X1\y;

- j4 l8 z- o7 k' {4 Y# N. h

X2=[ones(size(t)) exp(–t) t.*exp(–t)];

- q6 H3 V* `8 i6 D5 B1 D! f

b=X2\y;

2 i+ D$ W' F) Q8 T' @0 C* D# [% x

T=[0:.1:2.5];

% j) c1 L: I( P2 }4 @

Y1=[ones(size(T)) T T.^2]*a;

' x: f" p+ ~& x" \. L. Q

Y2=[ones(size(T)) exp(-T) T.*exp(-T)]*b;

5 F8 q+ D: J O& x* f3 r$ R, h9 [

figure(1)

- U* ~8 ?: w0 s3 Z1 @ L0 v

subplot(1,2,1)

, {/ k5 s% V- n4 L8 I; w

plot(T,Y1,-,t,y,o),grid on

+ H: p7 h! M9 w- |, X

title(多项式回归)

- \4 }0 }. z# U- P

subplot(1,2,2)

& \& I" i+ R. O" O& \3 s

plot(T,Y2,-,t,y,o),grid on

+ ~& M& j1 o% A1 h. P: r5 }! B

title(指数函数回归)

- w# T; ?( N7 D+ I# }' A
* M/ L, u" ]+ K6 _: I8 y' ]+ b

例2 已知变量y与x1,x2有关,测得一组数据为

' P9 ]5 @, _' ?+ G* q- w

  x1=[.2 .5 .6 .8 1.0 1.1 ];

9 ^6 z4 {+ f% }

  x2=[.1 .3 .4 .9 1.1 1.4 ];

$ B$ ^. U% M6 y/ N) J

  y=[.17 .26 .28 .23 .27 .24];

- N) N3 n* n4 t" b3 x6 y

采用来拟合,则有

- h/ N; ?) o" t' ^! m

x1=[.2 .5 .6 .8 1.0 1.1];

2 w( f* Z. p1 I: l- q4 F3 n* B% H

x2=[.1 .3 .4 .9 1.1 1.4];

f( k7 v& o2 {

y=[.17 .26 .28 .23 .27 .24];

/ ^/ c/ B: @: U" ? P: {$ Z+ N1 @

X=[ones(size(x1)) x1 x2];

# C5 E, O* y- z1 O/ ~7 E

a=X\y

8 l" S' T1 U3 o A5 U% H

a = 0.1018 0.4844 −0.2847

4 N) L! m+ N& C5 T k# R$ a

因此数据的拟合模型为

8 P3 T4 F; {" T2 n6 ?- u9 x9 |* {5 O

y=0.1018+0.4844x1−0.2487x2

& c6 l5 R* B( i9 Y

4、傅里叶分析与FFT

" T2 I$ k F# z8 S @# ?% |

利用MATLAB提供的FFT函数可方便地计算出信号的傅里叶变换,从而在频域上对信号进行分析。

, q; b M7 `4 u/ o; L" N

例1 :混合频率信号成分分析。有一信号x由三种不同频率的正弦信号混合而成,通过得到信号的DFT,确定出信号的频率及其强度关系,程序如下:

+ ^0 R8 I3 z) [0 b) A

t=0:1/119:1;

) b; _0 K! U2 \6 ^7 d

x=5*sin(2*pi*20*t)+3*sin(2*pi*30*t)+sin(2*pi*45*t);

1 o. x; v$ I% ~; q

y=fft(x);

6 w: ^6 M) o- |7 x1 H4 I

m=abs(y);

6 a F+ p+ D M1 k# O+ n

f=(0:length(y) -1)*119/length(y);

; f, t7 o7 E7 ]# M

figure(1)

( @2 i: g' j/ Z) ^& }

subplot(2,1,1),plot(t,x),grid on

( W% Y5 @; }4 n0 C( M$ L% j

title(多频率混合信号)

) x. q7 X! w- T# t, W

ylabel(Input \itx),xlabel(Time )

6 S; O( q. u6 ^1 n

subplot(2,1,2),plot(f,m)

6 D3 x. W1 m- Z; u9 k2 d5 @

ylabel(Abs. Magnitude),grid on

: A Z$ X0 A7 B

xlabel(Frequency (Hertz))

" G( F2 _* r# W* Z0 U# e* ]6 H
5 n* k: s, q" i7 C

例2 :信号在传输过程中,由于受信道或环境影响,在接收端得到的是噪声环境下的信号。我们利用FFT函数对这一信号进行傅里叶分析,从而确定信号的频率,程序如下:

9 h3 K/ x4 { l; Z/ q* v! f

t=0:1/199:1;

! m2 Q" f6 M9 a+ n0 V( T; e. U

x=sin(2*pi*50*t)+1.2*randn(size(t)); %噪声中的信号

: x# i& j) C8 C( a7 W1 ^

y=fft(x);

2 A) s: V" [$ R2 n

m=abs(y);

- f5 V" L: K+ ]

f=(0:length(y) -1)*199/length(y);

2 }$ |7 l" z( b) \. P" V

figure(1)

' n" ~7 R/ {" H, v( a. q

subplot(2,1,1),plot(t,x),grid on

) Z. C/ { Z0 ]9 u+ l

title(信号检测)

: m2 y# x5 {5 b4 S0 v" F, e$ P

ylabel(Input \itx),xlabel(Time )

7 a# C2 }. f @- X! {& X, x& y* a

subplot(2,1,2),plot(f,m)

+ w5 _1 W. Z2 ?) y! f, g

ylabel(Abs. Magnitude),grid on

1 ~. @: A4 w0 s H& K

xlabel(Frequency (Hertz))

, U( u4 k6 B# e* N7 o; o
* B7 U1 D' h+ Y" g( _% I+ w6 n

例3 :天文学家记录了300年来太阳黑子的活动情况,我们对这组数据进行傅里叶分析,从而得出太阳黑子的活动周期。MATLAB程序如下:

- w( d2 Y, B Y5 j# U

load sunspot.dat

1 E$ t! I7 V. b+ X6 r* v

year=sunspot(:,1);

4 p) ]- P4 n* ?' X: q4 U" B

wolfer=sunspot(:,2);

8 x3 a1 b2 J; l! V% G- y- S

figure(1)

( E- {8 \' {; S4 E

subplot(2,1,1)

. q+ y o3 K$ P, t. t- \) j

plot(year,wolfer)

. G3 ?% i1 l6 \& z9 Q' k

title(原始数据)

3 x# Y2 I- h6 J

Y=fft(wolfer);

2 X& s# r3 n6 W3 g

N=length(Y);

& f% t8 H7 ^6 X- o" b

Y(1)=[];

9 }+ F1 k4 F' G" `; o+ v0 B

power=abs(Y(1:N/2)).^2;

9 T. P0 a) c5 E& z9 e* ]) Y

nyquist=1/2;

0 \) L. q) G* n! H# _" u5 |6 Q

freq=(1:N/2)/(N/2)*nyquist;

& v3 @4 t! n0 F' I7 m

period=1./freq;

2 e! G2 `8 Q' Y

subplot(2,1,2)

+ }$ I* Q. ?: S0 o9 R

plot(period,power)

4 d3 w/ W9 G# G

title(功率谱), grid on

0 }7 d# g0 {' \" V2 a! M$ h; a

axis([0 40 0 2e7])

, ~1 N8 f/ [3 H) m- `
+ l. Q7 y9 T# w5 M ]

各位读者朋友,感谢您的阅读,您若对工程应用中的数学问题感兴趣,欢迎关注我,愿我们一起讨论和成长!!!

4 a# D6 p% j7 v/ S 4 t m. Q0 F/ |! w+ ^( X ) c0 _+ s$ n, w1 Y) g( z ' U6 p" p) V* c- D, D 6 {% W+ O) [1 ]( ~7 ^
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
魏辉兵
活跃在2026-4-15
快速回复 返回顶部 返回列表