数字信号处理MATLAB作业三(题目+解答代码)

该博客展示了MATLAB中使用FFT进行信号处理的例子,包括时域和频域的转换。通过创建不同频率的正弦波并进行傅立叶变换,强调了补零对分辨率的影响以及周期性在频域中的表现。还探讨了如何通过快速傅立叶变换(FFT)从混合信号中提取特定频率成分,并展示了实际信号的滤波过程。
摘要由CSDN通过智能技术生成

在这里插入图片描述
这题原本画出来就四条谱线,除了频率0的直流分量,就三根了,太少了,为了看着方便,我自己增加了序列

clear
close all
clc

n=0:8;
x=[4 3 2 6 7 8 3 3 5];
subplot(1,2,1);
stem(n,x)
xlabel('n');ylabel('幅度');title('原序列');
y=fft(x);
subplot(1,2,2);
stem(n,y);
xlabel('n');ylabel('幅度');title('频谱序列');

在这里插入图片描述
除了频率0,剩下的幅度一样,相位取反
在这里插入图片描述

clear
close all
clc

n=0:29;
a=0.1;
f1=0.0625;
f2=0.4375;
f3=0.5625;
x1=exp(-a.*n).*sin(2*pi*f1.*n);
x2=exp(-a.*n).*sin(2*pi*f2.*n);
x3=exp(-a.*n).*sin(2*pi*f3.*n);

subplot(3,2,1);
stem(n,x1);
xlabel('n');ylabel('幅度');title('时域f=0.0625');
y1=fft(x1);
subplot(3,2,2);
stem(n,y1);
xlabel('n');ylabel('幅度');title('频域f=0.0625');

subplot(3,2,3);
stem(n,x2);
xlabel('n');ylabel('幅度');title('时域f=0.4375');
y2=fft(x2);
subplot(3,2,4);
stem(n,y2);
xlabel('n');ylabel('幅度');title('频域f=0.4375');

subplot(3,2,5);
stem(n,x3);
xlabel('n');ylabel('幅度');title('时域f=0.5625');
y3=fft(x3);
subplot(3,2,6);
stem(n,y3);
xlabel('n');ylabel('幅度');title('频域f=0.5625');

在这里插入图片描述
在这里插入图片描述

clear
close all
clc

N=8;
n=0:7;
x1=zeros(size(n));
x2=zeros(size(n));

xa=(n>=0)&(n<=3);
x1(xa)=n(xa);
x2(xa)=4-n(xa);

xa=(n>=4)&(n<=7);
x1(xa)=8-n(xa);
x2(xa)=n(xa)-4;

fp1=fft(x1);
fp1=abs(fp1); 
fp2=fft(x2);
fp2=abs(fp2);

subplot(2,2,1);stem(n,x1);xlabel('n');ylabel('时域特性');title('三角波序列'); 
subplot(2,2,2);stem(n,fp1);xlabel('n');ylabel('幅频特性');title('三角波序列'); 
subplot(2,2,3);stem(n,x2);xlabel('n');ylabel('时域特性');title('反三角波序列'); 
subplot(2,2,4);stem(n,fp2);xlabel('n');ylabel('幅频特性');title('反三角波序列');

在这里插入图片描述
虽然两个函数时域看起来不一样,但是频域的函数是一样的,是因为函数在时域进行了周期化,实际上他俩就是一个函数

clear
close all
clc

N=8;
n=0:7;
x1=zeros(size(n));
x2=zeros(size(n));

xa=(n>=0)&(n<=3);
x1(xa)=n(xa);
x2(xa)=4-n(xa);

xa=(n>=4)&(n<=7);
x1(xa)=8-n(xa);
x2(xa)=n(xa)-4;
N2=32;
n2=0:31;
tempx1=zeros(1,24);
x11=[x1,tempx1];
tempx2=zeros(1,24);
x22=[x2,tempx2];

fp11=fft(x11);
fp11=abs(fp11); 
fp22=fft(x22);
fp22=abs(fp22);

subplot(2,2,1);stem(n2,x11);xlabel('n');ylabel('时域特性');title('补0后三角波序列'); 
subplot(2,2,2);stem(n2,fp11);xlabel('n');ylabel('幅频特性');title('补0后三角波序列'); 
subplot(2,2,3);stem(n2,x22);xlabel('n');ylabel('时域特性');title('补0后反三角波序列'); 
subplot(2,2,4);stem(n2,fp22);xlabel('n');ylabel('幅频特性');title('补0后反三角波序列');

在这里插入图片描述
后面补0,不增加任何的信息,但是会提高其分辨率
在这里插入图片描述
N=16时

clear
close all
clc

N=16;
n=0:N-1;
f1=1/16;
f2=1/64;
xn1=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f1)*n);
xn2=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f2)*n);

yn1=fft(xn1);
yn2=fft(xn2);

yn1=abs(yn1);
yn2=abs(yn2);

subplot(2,2,1);
stem(n,xn1);xlabel('n');ylabel('时域');title('f为1/16');
subplot(2,2,2);
stem(n,yn1);xlabel('n');ylabel('频域');title('f为1/16');

subplot(2,2,3);
stem(n,xn2);xlabel('n');ylabel('时域');title('f为1/64');
subplot(2,2,4);
stem(n,yn2);xlabel('n');ylabel('频域');title('f为1/64');

在这里插入图片描述

N2=128;
n2=0:N2-1;
f1=1/16;
f2=1/64;

xn3=sin(2*pi*0.125*n2)+cos(2*pi*(0.125+f1)*n2);
xn4=sin(2*pi*0.125*n2)+cos(2*pi*(0.125+f2)*n2);

yn3=fft(xn3);
yn4=fft(xn4);

yn3=abs(yn3);
yn4=abs(yn4);

subplot(2,2,1);
stem(n2,xn3);xlabel('n');ylabel('时域');title('f为1/16');
subplot(2,2,2);
stem(n2,yn3);xlabel('n');ylabel('频域');title('f为1/16');

subplot(2,2,3);
stem(n2,xn4);xlabel('n');ylabel('时域');title('f为1/64');
subplot(2,2,4);
stem(n2,yn4);xlabel('n');ylabel('频域');title('f为1/64');

在这里插入图片描述
在这里插入图片描述

dt=0.01;
N=512;
n=0:N-1;
t=n*dt;
f=n/(N*dt);
f1=30;
f2=10;
x=0.5*sin(2*pi*f1*t)+cos(2*pi*f2*t);
x1=x;
subplot(2,2,1)
plot(t,x1,'linewidth',3);
ylabel('x1','fontsize',16);
xlim([0 0.3])
y=fft(x);
xk1=abs(y)*2/N;
subplot(2,2,2)
plot(f,xk1,'linewidth',3);
ylabel('xk1','fontsize',16);
xlim([0 50])
f1=20;
f2=40;
yy=zeros(1,length(y));
for m=0:N-1
    if(m/(N*dt)>f1&m/(N*dt)<f2)|(m/(N*dt)>(1/dt-f2)&m/(N*dt)<(1/dt-f1))
        yy(m+1)=0.;
    else
        yy(m+1)=y(m+1);
    end
end
xk2=abs(yy)*2/N
subplot(2,2,4)
plot(f,xk2,'linewidth',3);
xlim([0 50]);
xlabel('f','fontsize',16);
ylabel('xk2','fontsize',16);
x2=real(ifft(yy));
subplot(2,2,3)
plot(t,x2,'linewidth',3);
xlabel('t','fontsize',16);
ylabel('x2','fontsize',16);
xlim([0 0.3])

在这里插入图片描述
对x1和x2进行了快速傅立叶变换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sol-itude

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值