我是靠谱客的博主 害羞汽车,最近开发中收集的这篇文章主要介绍利用fft作谱分析前言一、产生信号并进行谱分析二、DFT共轭对称性的应用三、DFT实虚性质的应用总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

前言

一、产生信号并进行谱分析

二、DFT共轭对称性的应用

三、DFT实虚性质的应用

总结


前言

在MATLAB中,提供了fft函数计算x(n)的DFT,fft的执行速度更快一些。

格式如下

1.y=fft(x) 计算x的FFT变换y。当x为矩阵时,计算x中的每一列信号的离散傅里叶变换。

2.y=fft(x,n) 计算x的n点FFT,当x的长度大于n时,需要截断x,当x的长度小于n时,需要补零。

matlab中的绘制函数:

1.plot 线性绘图函数

2.stem 绘制离散序列图

subplot 多坐标设定与定位当前的坐标系

一、产生信号并进行谱分析

要求:对x6(t) = cos(8*pi*t)+cos(16*pi*t)+cos(20*pi*t) 在一个周期内取N=8,16点抽样,并作谱分析。

分析:因为x6(t)是一个连续信号,所以必须先将其抽样得到离散信号,再取fft求离散傅里叶变换,进行谱分析。

 代码如下:

figure(6)
%% 设置频率
f1 = 4;f2 = 8;f3 =10;t = 0:0.01:1;
%% 得到x6信号
x6 = cos(f1*2*pi*t)+cos(f2*2*pi*t)+cos(f3*2*pi*t);subplot(221);plot(t,x6);
title('x6模拟信号波形');
 
%% 对x6进行8点采样 
T = 0.5/8;
t= 0 :T:0.5;%%采样间隔为T
x6 = cos(f1*2*pi*t)+cos(f2*pi*t*2)+cos(f3*2*pi*t);
%%k61为求几点的fft变换
k61  = 0:7;
y61 = fft(x6,8);magy61 =abs(y61);subplot(222);stem(k61,magy61);title('x6的8点FFT');
 
 %% 对x6进行16点采样
T = 0.5/16;
t= 0:T:0.5;
x6 = cos(f1*2*pi*t)+cos(f2*pi*t*2)+cos(f3*2*pi*t);
k62  = 0:15;
y62 = fft(x6,16);magy62 =abs(y62);subplot(223);stem(k62,magy62);title('x6的16点FFT');

波形如图所示:

  

二、DFT共轭对称性的应用

 对于有限长的序列可以写成这种形式。

x(n) = xep(n)+xop(n) 其中xep(n)为共轭对称序列 xop(n)为共轭反对称序列。

DFT[xep(n)] = Re[X(k)];

DFT[xop(n)] = j * Im[X(k)];

要求:x7(n) = x4(n) + x5(n) 其中x4(n)为圆周共轭对称序列,x5(n)为圆周共轭反对称序列。画出x7(n)的时域波形,求出X7(k),根据X7(k)求出X4(k)和X5(k)。

figure(7)
%% 使用一次fft变换求解两个序列的DFT序列X(k)
n4 = 0:15;x4 = cos((pi/4)*n4);n5 = 0:15;x5 = sin((pi/4)*n5);
n7 = 0:15;x7 = x4+x5;
subplot(221);stem(n7,x7);title('x7的16点序列');
%% 得到x7的16点FFT序列
k7 = n7;
y7 = fft(x7,16);
magy7 = abs(y7);
subplot(222);
stem(k7,magy7);title('x7的16点FFT');
%% X4等于X7的实部 X5等于X7的虚部*j
X4 = real(y7);
X5 = imag(y7)*i;
subplot(223);stem(k7,abs(X4));title('x4的16点序列');
subplot(224);stem(k7,abs(X5));title('x5的16点序列');

波形如图所示:

 

三、DFT实虚性质的应用

假设x1(n)和x2(n)都是N点的实数序列,可以用一次N点的DFT运算来计算各自的DFT。

w(n) = x1(n) + j * x2(n)

X1(k) = DFT[x1(n)] = Wep(k) = 1/2*[W((k))N+W^*((N-K))N]RN(k)

X2(k) = DFT[x2(n)] = 1/j *Wop(k)  = 1/2*j *[W((k))N-W^*((N-K))N]RN(k)

要求:

x8(n) = x4(n) +  j* x5(n) 其中x4 x5都是实序列 先画出x8(n)的的时域波形,求出X8(k),根据X8(k)求出X4(k)和X5(k)

figure(8)
%% x8(n) = x4(n) + j*x5(n)
n4 = 0:15;x4 = cos((pi/4)*n4);n5 = 0:15;x5 = sin((pi/8)*n5);
n8 = 0:15;x8= x4+x5*j;
%% 绘制x8(n)的16点序列
subplot(221);stem(n8,abs(x8));title('x8的16点序列');
%% 绘制X8(k)的频谱波形
k8 = n8;y8 = fft(x8,16);magy8 = abs(y8);subplot(222);stem(k8,magy8);title('x8的16点fft');
%% 为了求X8((N-k))N 先求出((N-K))N
tempk = mod((16-k8),16);
%% 数据下标从1开始 求出X8((N-k))N
tempy8 = y8(tempk+1);
%% X8((N-K))N*RN(k)的共轭
convy8=real(tempy8)-imag(tempy8)*i;
X4 = 0.5*(y8+convy8);subplot(223);stem(k8,abs(X4));title('x4的16点序列');
X5 = 1/(2*j)*(y8-convy8);subplot(224);stem(k8,abs(X5));title('x5的16点序列');

波形如图所示:

 

总结

分析了matlab中利用fft函数作频谱分析的三种类型的应用,掌握绘图方法和转换条件。

最后

以上就是害羞汽车为你收集整理的利用fft作谱分析前言一、产生信号并进行谱分析二、DFT共轭对称性的应用三、DFT实虚性质的应用总结的全部内容,希望文章能够帮你解决利用fft作谱分析前言一、产生信号并进行谱分析二、DFT共轭对称性的应用三、DFT实虚性质的应用总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部