lgsky 发表于 2009-6-28 16:07

如何解调信号

对于附件中由三种频率较为接近的信号,如何对其进行解调?老板让用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());
figure(1);
plot(f(nn),abs(z1(nn)),'bo-');grid on;%axis();
xlabel('频率(Hz)');ylabel('功率谱密度');
%计算幅值谱
tspan = length(data)/sf;
N = length(data);
=hhspectrum(data);
=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;
= buttord(Wp/(sf/2), Ws/(sf/2), Rp, Rs);
=butter(n_lowpass, Wn_lowpass);
data2 = filtfilt(a,b,k2);

请问这样做正确吗?如不正确,应如何做?谢谢!

lgsky 发表于 2009-6-30 15:02

请大侠们帮帮我,谢谢!

lgsky 发表于 2009-7-4 16:49

我摸索了一段时间,仍然不行,请大侠一定帮帮我!
页: [1]
查看完整版本: 如何解调信号