📄 正弦波源程序.m
字号:
function x=f2t(X)
global dt df t f T N
%x=f2t(X)
%x为时域的取样值矢量
%X为x的傅氏变换
%X与x长度相同并为2的整幂
%本函数需要一个全局变量dt(时域取样间隔)
X=[X(N/2+1:N),X(1:N/2)];
x=ifft(X)/dt;
end
2,t2f函数。
function X=t2f(x)
global dt df N t f T
%X=t2f(x)
%x为时域的取样值矢量
%X为x的傅氏变换
%X与x长度相同,并为2的整幂。
%本函数需要一个全局变量dt(时域取样间隔)
H=fft(x);
X=[H(N/2+1:N),H(1:N/2)]*dt;
end
(二),主程序。
1,%(1)绘出正弦信号波形及频谱
global dt df t f N
close all
k=input('取样点数=2^k, k取10左右');
if isempty(k), k=10; end
f0=input('f0=取1(kz)左右');
if isempty(f0), f0=1; end
*******************************************************************
k=10; %以下能运行
N=2^k;
f0=1;
dt=0.01; %ms
df=1/(N*dt); %KHz
T=N*dt; %截短时间
Bs=N*df/2; %系统带宽
f=[-Bs+df/2:df:Bs]; %频域横坐标
t=[-T/2+dt/2:dt:T/2]; %时域横坐标
s=sin(2*pi*f0*t); %输入的正弦信号
S=fft(s); %S是s的傅氏变换
a=fft(S); %a是S的傅氏反变换
a=real(a);
as=abs(S);
subplot(2,1,1); %输出的频谱
plot(f,as,'b');
grid;
axis([-2*f0,+2*f0,min(as),max(as)]);
xlabel('f (KHz)');
ylabel('|S(f)| (V/KHz)'); %figure(2)
subplot(2,1,2);
plot(t,a,'black'); %输出信号波形画图
grid;
axis([-2/f0,+2/f0,-1.5,1.5]);
xlabel('t(ms)');
ylabel('a(t)(V)');
gtext('频谱图');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -