找回密码
 注册
关于网站域名变更的通知
查看: 318|回复: 1
打印 上一主题 下一主题

离散信号MATLAB频谱分析程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-5-9 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
%FFT变换,获得采样数据基本信息,时域图,频域图
. v& M/ R3 S- o+ }2 W%这里的向量都用行向量,假设被测变量是速度,单位为m/s
4 s# k: m4 C) Qclear;
; q  Q* \2 a1 t) L4 kclose all;. S, B: s( D) A$ E0 a
' N8 G7 P* k3 _+ k: j
load data.txt              %通过仪器测量的原始数据,存储为data.txt中,附件中有一个模版(该信号极不规则)
7 r* c# |, E3 kA=data;                                        %将测量数据赋给A,此时A为N×2的数组% d+ y' \" P0 M' u
x=A(:,1);                                     %将A中的第一列赋值给x,形成时间序列/ y4 f/ Z1 k- N  _2 R0 w
x=x';                                           %将列向量变成行向量2 P+ @6 h' k5 Z# I! J
y=A(:,2);                                     %将A中的第二列赋值给y,形成被测量序列
* i/ q. ^9 H) p& N- P, L; O( N5 X( v8 T% X9 ]y=y';                                           %将列向量变成行向量% }. b1 _' |* D* T- H
+ ]+ M: [7 U  E% E  x: n2 M
%显示数据基本信息
' p& T8 w7 e  |' gfprintf('\n数据基本信息:\n')
2 i$ H' G5 A/ _6 `4 dfprintf('        采样点数 = %7.0f \n',length(x))                         %输出采样数据个数7 P! ?+ q5 x( N# m; l' ]4 d0 A
fprintf('        采样时间 = %7.3f s\n',max(x)-min(x))                    %输出采样耗时
3 ]) d7 A7 R2 j# T  Sfprintf('        采样频率 = %7.1f Hz\n',length(x)/(max(x)-min(x)))   %输出采样频率
7 `3 p/ e( h4 k% y" q" s4 i! G2 wfprintf('        最小速度 = %7.3f m/s\n',min(y))                         %输出本次采样被测量最小值3 p5 h) ?1 m$ _
fprintf('        平均速度 = %7.3f m/s\n',mean(y))                      %输出本次采样被测量平均值
+ [, c4 }8 q0 m0 h* `fprintf('        速度中值 = %7.3f m/s\n',median(y))                   %输出本次采样被测量中值5 J- Z$ C' @1 N2 W2 e! z4 s
fprintf('        最大速度 = %7.3f m/s\n',max(y))                          %输出本次采样被测量最大值! y5 b+ v2 c$ g7 J# B
fprintf('        标准方差 = %7.3f \n',std(y))                               %输出本次采样数据标准差
, A" q* i3 M4 K2 u0 j0 ^: |: Dfprintf('       协 方 差 = %7.3f \n',cov(y))                                %输出本次采样数据协方差
$ A, o. O* A) n" o- ifprintf('     自相关系数 = %7.3f \n\n',corrcoef(y))                       %输出本次采样数据自相关系数5 g7 l3 J" e) P8 C! Y5 u3 O
  1 w* U3 H: }+ v! ?- p
%显示原始数据曲线图(时域)) k/ d5 l7 b% ?8 m
subplot(2,1,1);
/ R7 D3 Q2 Z6 z" f; i! Eplot(x,y)                                                                                %显示原始数据曲线图1 ~% I) [( `8 E8 P8 J9 B$ L
axis([min(x) max(x) 1.1*floor(min(y)) 1.1*ceil(max(y))])             %优化坐标,可有可无
$ J3 L* x$ o1 u4 G& K" A% k0 uxlabel('时间 (s)');
& [0 v* b* M6 k# dylabel('被测变量y');
# }( E& w, z; B! ?title('原始信号(时域)');& z0 _5 y; f0 J: ]
grid on;) ?+ `% m) @7 I* ?! C

7 J1 ], K2 d! K  j# d%傅立叶变换7 x7 G/ f! W$ B1 f# v/ ]" I
y=y-mean(y);                                               %消去直流分量,使频谱更能体现有效信息& A3 B6 i, a0 g% e7 q
Fs=2000;                %得到原始数据data.txt时,仪器的采样频率。就是length(x)/(max(x)-min(x));     
+ h9 k/ n. g5 i7 t4 F5 ]N=10000;                                                 %data.txt中的被测量个数,即采样个数。其实就是length(y);0 O/ }) ?4 j/ p* c9 O
z=fft(y);6 i5 s; x/ |2 b
/ t( p4 c% x0 @8 A4 m6 R
%频谱分析
9 y/ k6 Q. x% k, P, n3 y& d: If=(0:N-1)*Fs/N;
- {4 n1 x( U2 z. o$ yMag=2*abs(z)/N;                                        %幅值,单位同被测变量y
7 k9 T0 Z# A; B' DPyy=Mag.^2;          %能量;对实数系列X,有 X.*X=X.*conj(X)=abs(X).^2=X.^2,故这里有很多表达方式' c2 |. a/ a6 x4 {5 [# k7 ^4 M4 k

5 p1 P. {( `, E3 |! Z%显示频谱图(频域)
3 H- m+ R3 u2 a+ e8 V/ r& Isubplot(2,1,2)9 @* m- x- |: D5 j' {4 r2 S
plot(f(1:N/2),Pyy(1:N/2),'r')                         %显示频谱图
" {" @! u5 @3 |7 e9 S! V. J%                 |
4 {( J) x' g( U& U8 B1 s%             将这里的Pyy改成Mag就是 幅值-频率图了
, a* ~# Z) ]- _6 @axis([min(f(1:N/2)) max(f(1:N/2)) 1.1*floor(min(Pyy(1:N/2))) 1.1*ceil(max(Pyy(1:N/2)))])
1 B. `* d0 M. l9 g* ~2 zxlabel('频率 (Hz)')
& x+ Z, ?) w9 V7 |5 ?ylabel('能量')4 T+ j4 e6 z6 S9 t& t, j. c0 ?
title('频谱图(频域)')
) q/ V0 n& ~6 ?& M5 E& w& @grid on;- K* H1 I% ]* P# K  v4 ^3 M) o* v

( \  \4 @3 x( o3 W- f( z%返回最大能量对应的频率和周期值/ K4 A7 c6 p: H! ]4 F
[a b]=max(Pyy(1:N/2));  @' O% I& j% g
fprintf('\n傅立叶变换结果:\n') # M% Y% F1 C  a& c! ?
fprintf('           FFT_f = %1.3f Hz\n',f(b))             %输出最大值对应的频率
7 L, C: |# R" ^3 U0 T4 cfprintf('           FFT_T = %1.3f s\n',1/f(b))          %输出最大值对应的周期7 R$ Z; K- W  H- H2 ^: h9 G9 R
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-5-9 13:23 | 只看该作者
    离散信号MATLAB频谱分析程序
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-23 15:17 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表