对于截断加窗和周期拓延总是很糊涂,这里先给出我的一段程序
clear all;
fs = 100000;% 取样频率
t=(0:1/fs:0.1)';
N = length(t)-1; %这里的N是谱线数,和取样长度差1
df = fs/N;%为了重合谱线
%信号
%----------------------------------
DC=5.250;
f0=50;
f1=150;
f2=300;
y=DC+5*sin(2*pi*f0*t+(30/180*pi))+5*sin(2*pi*f1*t+(45/180*pi))+5*sin(2*pi*f2*t+(60/180*pi));
figure(1); %画信号图
plot(y)
title('1')
ylabel('幅度')
xlabel('N 点')
grid
% ----------------------------------FFT变换
y = y - mean(y);%去除直流分量
H = fft(y,N+1);%作所有取样点的FFT
mag = abs(H)*2/(N+1);
f =(0:length(H)-1)'*fs/(length(H));%归1频率
figure(2);
plot(f(1:(N+1)/2),mag(1:(N+1)/2));
xlabel('frequenz(Hz)');
ylabel('Amplitudgang');
grid;
phase = angle(H)+pi/2;%相位,余弦到正弦
for i=1:N+1
if phase(i) > pi
phase(i) = phase(i)-pi;
else
phase(i) = phase(i);
end
end %让相位角只在-pi pi 之间变换
figure(3);
plot(f(1:(N+1)/2),phase(1:(N+1)/2)*180/pi)
xlabel('Frequency (Hz)')
ylabel('Phase (Degrees)')
grid on
figure(4); clf;%画频谱相位图
subplot(211), loglog(f(1:(N+1)/2),mag(1:(N+1)/2)); hold on;
xlabel('frequenz(Hz)');
ylabel('Amplitudgang');
grid;
subplot(212), semilogx(f(1:(N+1)/2),phase(1:(N+1)/2)*180/pi); hold on;
xlabel('Frequency (Hz)')
ylabel('Phase (Degrees)')
grid on
% ----------------------------------
关于混合波最大频率300HZ的初始相位差60度,周期为最大频率的倒数,计为T,则可以算出此正弦波第1个周期起始点是T1,结束点为T+T1
那么,如果要在原信号里的一个周期加个窗截断,然后把这段加过窗的信号进行周期拓延。。。应该怎么写程序呢?关键是这里我已经用了整周期取样,所以应该不管加窗与否,应该在图形上变化不大吧??
自己试了很久都不知道怎么弄,请大家帮帮忙看看,感谢感谢了。。。。