📄 2.txt
字号:
1.编写一个MATLAB函数,实现快速卷积算法。
函数实现:
function y=clconvt(x1,x2,N)
if length(x1)>N
errordlg('N必须>=x1的长度!’,’错误!’);
elseif length(x2)>N
errordlg('N必须>=x2的长度!’,’错误!’);
else
x1=[x1 zeros(1,N-length(x1))];
x2=[x2 zeros(1,N-length(x2))];
y1=fft(x1,N);
y2=fft(x2,N);
Y=y1.*y2;
y=ifft(Y);
end
例
x=[1,2,2,1];
>> h=[1,2,3,4,5];
>> N=9;
>> y=clconvt(x,h,9)
y =
Columns 1 through 8
1.0000 4.0000 9.0000 15.0000 21.0000 21.0000 14.0000 5.0000
Column 9
0.0000
>> stem(y)
2.编写一个MATLAB函数,用一个N点离散傅立叶变换同时计算两个N点实序列的离散傅立叶变换,并将结果与直接使用两个N点离散傅立叶变换计算出来的结果进行比较。
函数实现如下:
function [X1,X2]=qwdft(x1,x2,N)
x=x1+j*x2;
X=fft(x,N);
Y=conj(X);
K=0:N-1;
X1=0.5*(X+Y(mod(-K,N)+1));
X2=-j*0.5*(X-Y(mod(-K,N)+1));
源代码:
x1=[1,3,2,4];
>> x2=[3,2,6,1];
>> [X1,X2]=qwdft(x1,x2,4)
X1 =
10.0000 -1.0000 + 1.0000i -4.0000 -1.0000 - 1.0000i
X2 =
12.0000 -3.0000 - 1.0000i 6.0000 -3.0000 + 1.0000i
>> x1=[1,3,2,4];
>> X1=fft(x1)
X1 =
10.0000 -1.0000 + 1.0000i -4.0000 -1.0000 - 1.0000i
>> x2=[3,2,6,1];
>> X2=fft(x2)
X2 =
12.0000 -3.0000 - 1.0000i 6.0000 -3.0000 + 1.0000i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -