📄 powerspectrum.m
字号:
function [spec_win Px_fft] = powerspectrum(signal,win_type,win_size,overlap,fs)
%[spec_win, spec_fft] = disp_pspectrum(s1,win_type,win_size,overlap,fs)
%1 'hanning'
%2 'hamming'
%3 'blackman'
%4 'bartlett'
%5 'rectwin'
%hanning window lower side lobes
%[psdx0 w]=pwelch(pure_signal,500,250,512,fs,'twosided');
% Higher side lobes
% window size very small same group of 5000 to 5500
%1000 to 2000 good
% very big window size 10000:
if nargin == 2
fs = 22050;
win_size =1000;
win_type=2;
points
end;
if (win_type == 2) wd = hamming(win_size);
elseif (win_type == 3) wd = hanning(win_size);
elseif (win_type == 4) wd = bartlett(win_size);
elseif (win_type == 5) wd = blackman(win_size);
end;
[psdx0 w]=pwelch(signal,wd,overlap,length(signal),fs,'twosided');
%hanning window lower side lobes
%[psdx0 w]=pwelch(pure_signal,500,250,512,fs,'twosided');
% Higher side lobes
% window size very small same group of 5000 to 5500
%1000 to 2000 good
% very big window size 10000:
PSDvector2 = fftshift(psdx0);
% two sided spectrum
%figure(1)
%x = linspace(-0.5*fs, 0.5*fs, length(PSDvector2));
%plot(x,10*log10(PSDvector2))
% one sided spectrum
figure
l=length(PSDvector2);
x = linspace(0, 0.5*fs, length(PSDvector2)/2);
plot(x,10*log10(PSDvector2((l/2)+1:end))), title('Window spectrum');
%figure
%specgram(signal,length(signal),fs)
%spectrogram(signal,wd,overlap,512),fs);
%specgram(signal,length(signal),fs)
spec_win=10*log10(PSDvector2((l/2)+1:end));
figure(3)
s2=fft(signal);
s1 = abs(fft(signal));
%s1 = s1/max(s1); % Normalize
s1 = fftshift(s1);
l=length(s1);
x = linspace(0, 0.5*fs, l/2);
plot(x, (s1((l/2)+1:end))), title('fft of signal');
%Px = 10*log10(PSDvector2);
Px_fft=s2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -