用MATLAB进行余弦信号频谱分析

本文通过MATLAB演示了如何对余弦信号进行数字信号频谱分析,使用了fft和fftshift函数。首先,生成10Hz、时宽1s、采样率100Hz的余弦信号。然后,利用fft函数计算频谱,观察到10Hz和90Hz的峰值。最后,通过fftshift函数得到-fs/2~fs/2的频谱,显示了10Hz和-10Hz的对称峰值。
摘要由CSDN通过智能技术生成

平时常用,就写下来备份

%本文将以余弦信号为例,用MATLAB进行数字信号频谱分析
%主要使用了fft函数与fftshift函数,并对结果作出分析。
%产生余弦信号以作频谱分析:
%余弦信号y=cos(2π*f*t);
%信号频率为f=10Hz;
%时宽:1s
%采样率为fs=100Hz;
%MATLAB程序:
%=================1
clear all;
close all;
B=15;               %信号频率为
fs=100;             %采样率为fs
N=512*2;            %采样点个数
n=0:N-1;
t=n/fs; %时间序列
x=cos(2*pi*B*t);
figure;
subplot(3,1,1);plot(t,x);
title('余弦信号时域');
xlabel('t/s');
ylabel('幅度');
%==================2
%用fft函数对产生的余弦信号作频谱分析:
%注意:该步骤得到的是0~fs内的频谱。
f=(0:N-1)*fs/N;%实际上f= (0:N-1)*(fs/N);     %frequency range
y=fft(x,N); %对信号进行快速Fourier变换
%y=fft(x); %对信号进行快速Fourier变换
mag=abs(y); %求取Fourier变换的振幅
subplot(3,1,2);
%plot(f,abs(fft_y));
plot(f,mag); %绘出随频率变化的振幅
title('余弦信号频谱');
xlabel('f/Hz');
ylabel('幅度');
%可以看到10Hz处有峰值,90Hz的峰值是-10Hz的峰值向右频谱搬移fs=100Hz
%===================3
%用fftshift函数得到-fs/2~fs/2内的频谱:
y2=fftshift(y);
mag2=abs(y2); %求取Fourier变换的振幅
%m = length(x);
%f2=(-m/2:m/2-1)*(fs/m); 
f2=(-N/2:N/2-1)*(fs/N)
subplot(3,1,3);
plot(f2,mag2,'r');
title('余弦信号频谱');
xlabel('f/Hz');
ylabel('幅度');
%由于实信号频谱幅度关于原点对称,可以看到10Hz与-10Hz处的两个峰值。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值