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;
x=R*exp(-i*n'*w);
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);
k1=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 =论文网 http://www.Lwfree.com/
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;
x=zeros(N,N);
for n=0:N-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 和傅里叶变换的关系和采样点数与频谱疏密的关系,进一步熟
悉了循环移位和循环卷积的算法实现过程.