|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
对于附件中由三种频率较为接近的信号,如何对其进行解调?老板让用hilbert变化后滤波,但仍未明白如何做?以下是我试做的m文件:
clear all;clc;close all;
load data.mat
sf = 100; %采样频率
%计算自谱函数
nfft1 = 2^nextpow2(length(data));
f=0: sf/nfft1: sf/2-sf/nfft1;
w=hanning(nfft1);%%矩形窗处理
z1=psd(data ,nfft1,sf,w,nfft1/2);
nn=1:nfft1/2;
max_1 = max(max([z1(nn)]));
figure(1);
plot(f(nn),abs(z1(nn)),'bo-');grid on;%axis([0,12,0,max_1]);
xlabel('频率(Hz)');ylabel('功率谱密度');
%计算幅值谱
tspan = length(data)/sf;
N = length(data);
[A,fa,tt]=hhspectrum(data);
[E,tt1]=toimage(A,fa,tt,length(tt));
for k=1:size(E,1)
bjp(k)=sum(E(k,:).*E(k,:))*1/sf*1/tspan;
end
f=(0:N-3)/N*(sf/2);
figure(2);
plot(f,bjp);
xlabel('频率 / Hz');
ylabel('幅值');
%进行hilbert变换
y = hilbert(data);
k1 = real(y);
k2 = imag(y);
%求幅值谱
yy = abs(y); %直接求模
yy=detrend(yy);
f2=sf*(0:nfft1/2-1)/nfft1;
yy_fft=fft(yy,nfft1); %求fft
z12=abs(yy_fft)*2/nfft1; %求幅值谱
figure(3);
plot(f2(1:1000),z12(1:1000));xlabel('频率(Hz)');ylabel('hilbert变换后的幅值谱');
%--------------------------------------------------------------------------
%低通滤波处理
Rp = 0.1;
Rs = 30;
Wp = 5;
Ws =8;
[n_lowpass, Wn_lowpass] = buttord(Wp/(sf/2), Ws/(sf/2), Rp, Rs);
[a,b]=butter(n_lowpass, Wn_lowpass);
data2 = filtfilt(a,b,k2);
请问这样做正确吗?如不正确,应如何做?谢谢! |
|