sinefft.m

来自「对正弦信号进行FFT变换 画频谱图」· M 代码 · 共 68 行

M
68
字号
%***************1.正弦波****************%
fs=100;%设定采样频率
N=128;
n=0:N-1;
t=n/fs;
f0=10;%设定正弦信号频率
%生成正弦信号
x=5*sin(2*pi*f0*t)+sin(2*pi*2*f0*t)+1.6*sin(2*pi*3*f0*t)+1*sin(2*pi*4*f0*t)+0.6*sin(2*pi*5*f0*t)+1.2*sin(2*pi*6*f0*t)+1.3*sin(2*pi*7*f0*t)+1.4*sin(2*pi*8*f0*t)+2.6*sin(2*pi*9*f0*t);
%x=5*sin(2*pi*f0*t);
%x=x+randn(1,length(x));
figure(1);
subplot(231);
plot(t,x);%作正弦信号的时域波形
xlabel('t');
ylabel('y');
title('正弦信号y=2*pi*10t时域波形');
grid;
%进行FFT变换并做频谱图
y=fft(x,N);%进行fft变换
mag=abs(y);%求幅值
%f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换
f=linspace(0,fs,N);
figure(1);
subplot(232);
plot(f,mag);%做频谱图
%axis([0,100,0,80]);
xlabel('频率(Hz)');
ylabel('幅值');
title('正弦信号y=2*pi*10t幅频谱图N=128');
grid;
%求均方根谱
sq=abs(y);
figure(1);
subplot(233);
plot(f,sq);
xlabel('频率(Hz)');
ylabel('均方根谱');
title('正弦信号y=2*pi*10t均方根谱');
grid;
%求功率谱
power=sq.^2;
figure(1);
subplot(234);
plot(f,power/N);
xlabel('频率(Hz)');
ylabel('功率谱');
title('正弦信号y=2*pi*10t功率谱');
grid;
%求对数谱
ln=log(sq);
figure(1);
subplot(235);
plot(f,ln);
xlabel('频率(Hz)');
ylabel('对数谱');
title('正弦信号y=2*pi*10t对数谱');
grid;
%用IFFT恢复原始信号
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(1);
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('通过IFFT转换的正弦信号波形');
grid;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?