用MATLAB实现离散傅里叶变换
用MATLAB实现离散傅里叶变换
1.设 要求用MATLAB实现:
(1)计算 的傅里叶变换 ,并绘出其幅度;
(2)分别计算 的4点DFT和8点DFT,并绘出其幅度;
(提示:DFT变换可用MATLAB提供的函数fft实现)
思考:
(1)DFT和傅里叶变换的关系;
(2)N取8点DFT频谱是否比取4点时的频谱更密,为什么?
思考题解答:
(1)DFT相当于对连续的傅立叶变换进行N点等间隔采样
(2)N取8点时的DFT频谱比4点时的频谱更密。 因为采样点数多,采样间隔小。
function y=r(n1,n2)
n=n1:n2;
y=[(n-0)>=0];
n=0:3;
R=r(0,3);
w=0:0.1:2*pi;
y=abs(x);
plot(w,y,'linewidth',0.8)
function y=r(n1,n2)
n=n1:n2;
y=[(n-0)>=0];
n=0:3;
R=r(0,3);
k2=0:7;
y1=abs(fft(R,4));
y2=abs(fft(R,8));
figure(1)
stem(k1,y1,'linewidth',1.0);
figure(2)
stem(k2,y2,'linewidth',1.0);
2.设 ={2,1,3,1},要求用MATLAB计算循环移位
Cirshftt.m
Function y=cirshftt(x,m,N)
x=[x zeros(1,Nlength(x))];n=0:N-1;n=mod(n-m,N);
y=x(n+1);
x=[2 1 3 1];N=6;m=-1;
y=cirshftt(x,m,N)
结果:
y =
1 3 1 0 0 2
3. 设 和 是两个4点序列, ={1,2,2,1}, ={1,-1,1,-1},要求用MATLAB实现:(1)计算 与 的线性卷积;
(2)分别计算 与 的6、7、8点循环卷积。
思考:
1、线性卷积与循环卷积的关系;
2、什么条件下,线性卷积与循环卷积相等
思考题解答:
(1)循环卷积是线性卷积进行循环移位后的结果。
(2)当L>=M+N-1时线性卷积的结果和循环卷积相等。
程序:
(1):n=0:3;
x1=[1 2 2 1];
x2=[1 -1 2 -1];
y=conv(x1,x2)
结果:
y =
1 1 1 0 -1 -1 -1
(2):function cir(N)
x1=[1 2 2 1];x2=[1 -1 1 -1];
x1=[x1 zeros(1,N-length(x1))];
x2=[x2 zeros(1,N-length(x2))];
m=0:N-1;
751com.cn
-1;
x(:,n+1)=x2(mod((n-m),N)+1)';
end
fn=x1*x
结果:
>> cir(6)
fn =
0 1 1 0 -1 -1
>> cir(7)
fn =
1 1 1 0 -1 -1 -1
>> cir(8)
fn =
1 1 1 0 -1 -1 -1 0
小结:通过本次实验,我进一步认识了傅立叶变换的求法,知道了DFT和傅里叶变换的关系和采样点数与频谱疏密的关系,进一步熟悉了循环移位和循环卷积的算法实现过程.326