⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 powerspectrum.m

📁 power spectrum, just input the signal....
💻 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 + -