登录论坛

查看完整版本 : [MATLAB信号处理] 有关Pressure oscillation的程序编辑


pressure oscillation
2019-09-16, 22:08
我用带通滤波得到了缸压曲线的pressure oscillation,然后想用FFT得到oscillation的频谱图。我看论文里有的使用高通滤波,下面是我的程序和程序,希望会做的指点一下或帮忙修改下程序。
A=xlsread('7');

t=1:1:2501;
% [b,a]=butter(2,[0.005,0.25]);
[b,a]=butter(2,[0.03,0.2]);

data1=filter(b,a,A); % 进行滤波
[AX,H1,H2] = plotyy(t,A,t,data1,'plot');
set(AX(1),'XColor','k','YColor','b');
set(AX(2),'XColor','k','YColor','r');

HH1=get(AX(1),'Ylabel');
set(HH1,'String','Pressure[bar]');
set(HH1,'color','b');

HH2=get(AX(2),'Ylabel');
set(HH2,'String','Pressure Oscillation[bar]');
set(HH2,'color','r');
%set(HH2,'yTick',[0:10:400]) %设置右边Y轴的刻度

set(H1,'LineStyle','-');
set(H1,'color','b');
set(H2,'LineStyle','-');
set(H2,'color','r');

set(AX(1),'yTick',[0:10:80]) %设置左边Y轴的刻度
set(AX(2),'yTick',[-2:0.5:2]) %设置右边Y轴的刻度

legend([H1,H2],{'Cylinder Pressure';'Pressure Oscillation'});
% xlabel('Zero to 20 musec.');

fs=50000;%%采样频率为2kHz;
t=1/fs;%%采样周期
M=1000;
X=0:M-1;
f=X*fs/M;
Y=abs(fft(A,2000));

n=0:1/fs:1;
Nfft=2000;
window=hanning(1000);
noverlap=256;
dflag='none';

[Pxx1,f1]=pwelch(Y,window,noverlap,Nfft,fs);
figure,plot(f1,Pxx1,'r');
ylabel('Power');
xlabel('Frequency[Hz]');