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

离散信号MATLAB频谱分析程序

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
%FFT变换,获得采样数据基本信息,时域图,频域图
* X: l- E8 z0 D: ?( L%这里的向量都用行向量,假设被测变量是速度,单位为m/s$ W. D3 Q$ V( `/ W
clear;
5 H* d* O3 d; ^& a6 n% }% ~" gclose all;
; h! B5 F/ X& a, d6 W$ W% Q  s6 J
9 l' Z% q( T4 `; P* sload data.txt              %通过仪器测量的原始数据,存储为data.txt中,附件中有一个模版(该信号极不规则)
  V9 ^( X- y3 M' C' \A=data;                                        %将测量数据赋给A,此时A为N×2的数组# w! e4 U0 a- u5 J( {
x=A(:,1);                                     %将A中的第一列赋值给x,形成时间序列3 ]: y6 q. }5 [4 B( H& ]
x=x';                                           %将列向量变成行向量
/ U* Y! S4 [9 W# d- D! W+ [+ I4 `y=A(:,2);                                     %将A中的第二列赋值给y,形成被测量序列
4 x8 y3 l- R+ m, d2 x5 wy=y';                                           %将列向量变成行向量
% l( @( v) |9 I, g& L) z# V2 [/ c* p- x  _
%显示数据基本信息
4 f% w0 G  G. E% @; [fprintf('\n数据基本信息:\n') 0 e5 {. z7 p7 R
fprintf('        采样点数 = %7.0f \n',length(x))                         %输出采样数据个数
4 g$ a* C: c9 J0 ufprintf('        采样时间 = %7.3f s\n',max(x)-min(x))                    %输出采样耗时
( ~- y) v9 M" Yfprintf('        采样频率 = %7.1f Hz\n',length(x)/(max(x)-min(x)))   %输出采样频率
; `* }0 h) [& u; Mfprintf('        最小速度 = %7.3f m/s\n',min(y))                         %输出本次采样被测量最小值' P% A) t: T1 k" z6 B
fprintf('        平均速度 = %7.3f m/s\n',mean(y))                      %输出本次采样被测量平均值0 G; N- z, |: l" I! Z1 n
fprintf('        速度中值 = %7.3f m/s\n',median(y))                   %输出本次采样被测量中值
9 D, S& A3 J0 S1 x  Mfprintf('        最大速度 = %7.3f m/s\n',max(y))                          %输出本次采样被测量最大值
2 ?7 T! U* z# U% |fprintf('        标准方差 = %7.3f \n',std(y))                               %输出本次采样数据标准差! C( @6 x! f0 {- D1 P% ?
fprintf('       协 方 差 = %7.3f \n',cov(y))                                %输出本次采样数据协方差
* o  _; |! f1 S3 ^2 ^! }9 m: l9 t' f2 ffprintf('     自相关系数 = %7.3f \n\n',corrcoef(y))                       %输出本次采样数据自相关系数
6 N2 U( H* h$ ~' T& E& ]- {6 \  1 w8 f; ~, N  @6 m
%显示原始数据曲线图(时域)
3 j. d4 s8 @% e. i  g* f% {subplot(2,1,1);
; C; |# m# b2 k: d( c5 Pplot(x,y)                                                                                %显示原始数据曲线图2 I, y/ O1 s/ p
axis([min(x) max(x) 1.1*floor(min(y)) 1.1*ceil(max(y))])             %优化坐标,可有可无
* w( P5 U5 |3 D: r5 xxlabel('时间 (s)');
- X! t8 P$ L2 @ylabel('被测变量y');
% ~( v& e2 u) e$ p- W& Otitle('原始信号(时域)');
' s" e+ U" K, [grid on;1 i+ ?" j4 _- }  I0 W

4 Y( N4 }4 L) w" N0 V& E%傅立叶变换- b6 _6 Y: q) n, ~% k" r
y=y-mean(y);                                               %消去直流分量,使频谱更能体现有效信息
* ]  ~8 C8 t. }- qFs=2000;                %得到原始数据data.txt时,仪器的采样频率。就是length(x)/(max(x)-min(x));     
: W8 T/ z/ }/ Q2 @* i, a! a, a9 TN=10000;                                                 %data.txt中的被测量个数,即采样个数。其实就是length(y);
% c, n" T- T, k) Nz=fft(y);# }+ ?- e2 Z, f7 I

- J" E* v; F* N# r" f5 Q0 G/ V, h%频谱分析& m2 p5 `$ O* h" L6 E
f=(0:N-1)*Fs/N;
7 ]2 _4 j4 y% `6 U% X' _! X, b4 ]7 xMag=2*abs(z)/N;                                        %幅值,单位同被测变量y
+ W- h3 g7 ^" L' x2 P+ g9 {& SPyy=Mag.^2;          %能量;对实数系列X,有 X.*X=X.*conj(X)=abs(X).^2=X.^2,故这里有很多表达方式
/ k- \, ]* _3 Z$ `- t! W
, g/ |/ o4 `2 {5 W%显示频谱图(频域)
5 `' y5 ]# h7 V; R) s7 |5 Jsubplot(2,1,2)3 v; O- d5 q% _
plot(f(1:N/2),Pyy(1:N/2),'r')                         %显示频谱图8 S. d( @' d, W, f
%                 |  d. m* e5 y# H- {
%             将这里的Pyy改成Mag就是 幅值-频率图了* V! }3 b+ q) g6 x
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)))]) 9 x3 g% o( o9 p9 E
xlabel('频率 (Hz)')
, O! V; y6 |* q. fylabel('能量'): k# h2 q( S( R- p
title('频谱图(频域)')) d( }0 \! E+ K3 E* A# X9 t, u
grid on;/ `- g7 ]5 _9 S1 \

  E9 U9 H- v. c3 c%返回最大能量对应的频率和周期值5 D. r7 @" L* f) c1 B7 i- s
[a b]=max(Pyy(1:N/2));
- G% P) I# e9 y. r  p! Z/ s! ffprintf('\n傅立叶变换结果:\n')
( i" p3 w; T) R8 ]: D; `6 e6 G6 D) @fprintf('           FFT_f = %1.3f Hz\n',f(b))             %输出最大值对应的频率& D* I4 u. O0 }9 s5 w3 s3 c4 N  G
fprintf('           FFT_T = %1.3f s\n',1/f(b))          %输出最大值对应的周期0 r5 j' ?/ Q8 m' a' A. m/ p
  • 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-8-23 19:29 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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