📄 3.m
字号:
b=input('请选择信号:\n1:x1(n),2:x2(n),3:x3(n),4:x4(n),5:x5(n),6:x6(n),7:x4+x5,8:x4+jx5:\n');
i=0;
close all;
while(b)
if b==6
N=input('请选择FFT变换区长度N:16 or 32 or 64:\n');
fs=64;
n=0:N-1;
x=cos(8*pi*n/fs)+cos(16*pi*n/fs)+cos(20*pi*n/fs);
else
N=input('请选择FFT变换区长度N:8 or 16:\n');
if b==1
x=[1 1 1 1 0 0 0 0];
else if b==2
x=[1 2 3 4 4 3 2 1 ];
else if b==3
x=[4 3 2 1 1 2 3 4];
else if b==4
n=0:N-1;
x=cos(0.25*pi*n);
else if b==5
n=0:N-1;
x=sin((pi*n)/8);
else if b==7
n=0:N-1;
x=cos(n*pi/4)+sin(n*pi/8);
else if b==8
n=0:N-1;
x=cos(n*pi/4)+j*sin(n*pi/8);
end
end
end
end
end
end
end
end
f=fft(x,N);
i=i+1;
figure(i)
printf(x,abs(f),abs(N),abs(b));
if N==16
if b==7
k=conj(f);
x4=(f+k)/2;
figure(i+2)
subplot(2,2,1);
stem(abs(x4),'.');
xlabel('k');
ylabel('|X4(k)|');
title('恢复后的X4(k)');
x5=(f-k)/2;
subplot(2,2,3);
Stem(abs(x5),'.');
xlabel('k');
ylabel('|X5(k)|');
title('恢复后的X5(k)');
end
if b==8
k(1)=conj(f(1));
for m=2:N
k(m)=conj(f(N-m+2));
end
fe=(x+k)/2;
fo=(x-k)/2;
xr=ifft(fe,N);
b=4;
figure(i+1)
printf(xr,abs(fe),abs(N),abs(b));
xi=ifft(fo,N)/j;
b=5;
figure(i+2)
printf(xi,abs(f),abs(N),abs(b));
end
end
b=input('请选择信号 :\n 1:x1(n),2:x2(n),3:x3(n),4:x4(n),5:x5(n),6:x6(n),7:x7=x4+x5,8:x8=x4+jx5,0(退出 ):\n');
end
画图子程序
function printf(j,k,N,b)
subplot(2,2,1);
if(b~=8)
if b==1|b==2|b==3
M=3.2;
n=0:7;
stem(n,j,'.');
n=0:7;
m=zeros(8);
else
M=N*0.4;
n=0:N-1;
stem(n,j,'.');
n=0:N-1;
m=zeros(N);
end
hold on;
plot(n,m);
t=max(j);
xlabel('n');
string=['x',num2str(b),'(n)的波形'];
ylabel('x(n)');
text(M,(t*0.8),string);
end
subplot(2,2,3);
n=0:N-1;
stem(n,k,'.');
t=max(k);
xlabel('K');
string=['x',num2str(b),'(n)的N=',num2str(N),'点FFT'];
text((N*0.4),(t*0.8),string);
ylabel('|X(k)|');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -