数字信号处理基础(附源码)

        今天给大家分享分享常见的数字信号进行傅里叶变换,求取对应的频谱、均方根谱、功率谱和对数谱,以及经过傅里叶反变换重构的波形。

1、代码

clc
clear all
%***************1.正弦波****************%
fs =100;                                            %设定采样频率
N =128;
n =0:N -1;
t = n/ fs;
f0 =10;                                             %设定正弦信号频率
%生成正弦信号
x = sin(2*pi*f0*t);
figure(1);
subplot(231);
plot(t,x); %作正弦信号的时域波形
xlabel('时间/ s');
ylabel('幅值');
title('时域波形');
grid;
%进行FFT 变换并做频谱图
y = fft(x,N);                                       %进行FFT 变换
mag = abs(y);                                   %求幅值
f = (0:length(y) -1)'*fs/ length(y);        %进行对应的频率转换
subplot(232);
plot(f,mag);                                        %作频谱图
axis([0,100,0,80]);
xlabel('频率/ Hz');
ylabel('幅值');
title('幅频谱图');
grid;
%求均方根谱
sq = abs(y);
subplot(233);
plot(f,sq);
xlabel('频率/ Hz');
ylabel('均方根谱');
title('均方根谱');
grid;
%求功率谱
power = sq.^2;
subplot(234);
plot(f,power);
xlabel('频率/ Hz');
ylabel('功率谱');
title('功率谱');
grid;
%求对数谱
ln = log(sq);
subplot(235);
plot(f,ln);
xlabel('频率/ Hz');
ylabel('对数谱');
title('对数谱');
grid;
%用IFFT 恢复原始信号
xifft = ifft(y);
magx = real(xifft);
ti = [0:length(xifft)-1] / fs;
subplot(236);
plot(ti,magx);
xlabel('时间/ s');
ylabel('幅值');
title('IFFT 后的信号波形');
grid;
%****************2.白噪声****************%
fs =50;                                              %设定采样频率
t = -5:0.1:5;
x = rand(1,100);
figure(2);
subplot(231);
plot(t(1:100),x);                               %作白噪声的时域波形
xlabel('时间(s)');
ylabel('幅值');
title('时域波形');
grid;
%进行FFT 变换并做频谱图
y = fft(x);                                     %进行FFT 变换
mag = abs(y);                               %求幅值
f = (0:length(y) -1)'*fs/ length(y); %进行对应的频率转换
subplot(232);
plot(f,mag);                                    %作频谱图
xlabel('频率/ Hz');
ylabel('幅值');
title('幅频谱图');
grid;
%求均方根谱
sq = abs(y);
subplot(233);
plot(f,sq);
xlabel('频率/ Hz');
ylabel('均方根谱');
title('均方根谱');
grid;
%求功率谱
power = sq.^2;
subplot(234);
plot(f,power);
xlabel('频率/ Hz');
ylabel('功率谱');
title('功率谱');
grid;
%求对数谱
ln = log(sq);
subplot(235);
plot(f,ln);
xlabel('频率/ Hz');
ylabel('对数谱');
title('对数谱');
grid;
%用IFFT 恢复原始信号
xifft = ifft(y);
magx = real(xifft);
ti = [0:length(xifft)-1] / fs;
subplot(236);
plot(ti,magx);
xlabel('时间/ s');
ylabel('幅值');
title('IFFT 后的信号波形');
grid;

2、图像展示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值