声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1193|回复: 2

[滤波] 如何解调信号

[复制链接]
发表于 2009-6-28 16:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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);

请问这样做正确吗?如不正确,应如何做?谢谢!
信号频率.jpg

data.mat

126.45 KB, 下载次数: 18

数据文件

回复
分享到:

使用道具 举报

 楼主| 发表于 2009-6-30 15:02 | 显示全部楼层
请大侠们帮帮我,谢谢!
 楼主| 发表于 2009-7-4 16:49 | 显示全部楼层
我摸索了一段时间,仍然不行,请大侠一定帮帮我!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 04:32 , Processed in 0.060012 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表