【matlab信号处理】FFT简单示例

【matlab信号处理】FFT简单示例

%构成并画出受噪声污染的信号
clear,randn('state',0);      %正态随机数发生器置0
t=linspace(0,10,512);        %生成均匀采样数组(0-10之间,共计512个数)
y=6*cos(6*t)-4*sin(12*t)+6*randn(size(t));  %生成波形和标准偏差为0的正态随机噪声randn(size(t))
subplot(311);
plot(t,y)
xlabel('t');
ylabel('信号值f(t)');

%计算并画出受噪声污染信号的幅度谱
Y=fft(y);             %计算信号的DFT
Ts=t(2)-t(1);         %计算信号的采样周期
Ws=2*pi/Ts;           %计算信号的采样频率
Wn=Ws/2;
w=linspace(0,Wn,length(t)/2);
Ya=abs(Y(1:length(t)/2));
subplot(312);
plot(w,Ya)
xlabel('\omega');
ylabel('频谱幅值F(\omega)');

%在有效信号频率段寻找数组中非零元素序号
ii=find(w<=20);
subplot(313);
plot(w(ii),Ya(ii))
xlabel('\omega');
ylabel('局部放大频谱F(\omega)');
grid

在这里插入图片描述

%设x(n)=-0.95^n(-5<=n<=5)
%求其频谱,画出序列图形、频谱图、
%序列x(n)的傅里叶变换

n=-5:5;x=(-0.95).^n;
subplot(311);stem(n,x);
title('序列x(n)的图形');
xlabel('n');ylabel('x(n)')

k=-200:200;
w=(pi/100)*k;      %横坐标(频率轴)的示值缩小比例系数
X=x*(exp(-j*pi/100)).^(n'*k);
magX=abs(X);angX=angle(X);
subplot(312);plot(w/pi,magX);grid on;
title('序列x(n)的幅度谱');

axis([-2,2,0,15]);
xlabel('频率\omega');
ylabel('|x|');
subplot(313);plot(w/pi,angX/pi);grid on;
title('序列x(n)的相位谱'); 
axis([-2,2,-1,1]);
xlabel('频率\omega');
ylabel('\psi/\pi')

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值