matlab ,已有数据,如何滤波?

我有一组数据:A: 0.000500 0.001000 0.001500 0.002000 0.002500 0.003000 0.003500 0.004000 0.004500 0.005000 B: 1281.242606 1281.241405 1281.240573 1281.239272 1281.239636 1281.242237 1281.242333 1281.242881 1281.241772 1281.241039 这只是一部分,全部数据用plot(A,B)画图为类似方波的形式,它含有大概50Hz以上杂波分量,如何除去杂波,得到方波,具体思路是什么?因为这不是具体函数,本人无从下手。求解,谢谢

思路就是设计一个低通滤波器,分界点就是50Hz,以下是一个巴特沃斯低通滤波器的程序figure; %绘制巴特沃斯滤波器频响、相位曲线及信号滤后曲线%低通滤波器技术要求,假设采样频率为fs=500, 拟定%通带截止频率为40Hz,阻带下限截止频率为60Hz%通带衰减为0.25dB,阻带衰减为30dBT=A;data=B;fs=500;Wp=2*pi*40/fs;Ws=2*pi*60/fs;Rp=0.25;Rs=30;
Omip=Wp/pi;Omis=Ws/pi; %归一化技术要求
[N,Wn]=buttord(Omip,Omis,Rp,Rs); %确定滤波器的阶数
disp(['The order of Butterworth Filtering is ',num2str(N)]);
[b,a]=butter(N,Wn); %确定Butterworth滤波器转移函数系数向量
[H,w]=freqz(b,a,512); %512点复频响应
subplot(221); %绘制幅频响应曲线
plot(w/pi,abs(H));title('幅频响应');
xlabel('w(/pi)');ylabel('|H(jw)|');axis([0,1,0,1.1]);
%set(gca,'XTickMode','manual','XTick',[0,Omip,Omis,1]);
%set(gca,'YTickMode','manual','YTick',[0,10^(-Rs/20),10^(-Rp/20),1]);
%grid;
subplot(222); %绘制相频响应曲线
plot(w/pi,angle(H)/pi);title('相频响应');
xlabel('w(/pi)');ylabel('pha(/pi)');axis([0,1,-1,1]);
%set(gca,'XTickMode','manual','XTick',[0,Omip,Omis,1]);
%grid;
subplot(223);
plot(T,data);title('原信号波形图');axis([0,2.2,-1.1,1.1]);
subplot(224);
data1=filter(b,a,data);
plot(T,data1);title('滤波后波形图');
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-08-22
设置一个50Hz截止的低通滤波器,然后filtfilt即可
第2个回答  2017-08-09
这个问题相当于:“我怎么用C语言来写一个算法”一样,笼统到没有意义。
第3个回答  2017-08-10
设置阈值直接把异常点去除可以么

matlab ,已有数据,如何滤波?
data1=filter(b,a,data);plot(T,data1);title('滤波后波形图');

matlab中如何实现维纳滤波
导入数据**:首先,你需要导入你要处理的数据。这通常是一个包含噪声的信号。**创建滤波器系数**:维纳滤波器需要一个滤波器系数,这个系数通常可以通过某种方法(如频率响应法)来计算。**应用滤波器**:使用MATLAB的内置函数`filter`或`lfilter`来应用滤波器到你的数据上。拓展知识:下面是一个简单的...

简单使用matlab滤波器
首先,生成所需的滤波器系数,此步骤可通过 MATLAB 的内置函数实现。随后,将这些系数导出至文件,以便后续使用。执行此操作时,通过选择“File”菜单中的“Export”选项,即可打开导出数据对话框。在该对话框中,选择“导出至MAT-File”,并将其保存为“Coefficients”。在进行命名时,请确保采用有意义的...

matlab怎么设置低通滤波器?
已知一阶低通滤波器的传递函数,有多种实现方法。一种方法是直接将传递函数写出来,简单直接。模块左侧为输入端,比如一个含有白噪声的正弦信号,右侧为输出端,连接示波器即可。这种方法适用于初学者。另一种方法更为灵活,使用Matlab Fcn实现。选择Matlab Fcn的原因是,一阶低通滤波器只是众多滤波算法中最...

怎么在matlab里实现一组数据(ss)的低通滤波。数据如下图所示,我的目的...
dB;Rs=50; %stop >Rs dB;[N, Wn] = buttord(wp\/(fs\/2), ws\/(fs\/2), Rp, Rs);[b,a]=butter(N,Wn); %[B,A] = BUTTER(N,Wn),Wn是归一化频率,具体计算方法是(2*截止频率)\/采样频率。[h,w]=freqz(b,a);tt='lowpass'; %tt为标题字符串,表示是哪种滤波器 ...

matlab 中值滤波
K[1]=Y[1]K[2]=(Y[1]、Y[2]、Y[3]、Y[4])的中间值,即为2或3。3、matlab的中值滤波实现方式:调用函数:A=medfilt1(B,n)、B为输入信号,A为滤波后的信号,即结果。4、对于输入信号(最开头的图),以下分别为设置区间n=8和n=16得到的滤波图像。中值滤波可以过滤尖峰脉冲。目的在于...

MATLAB数值滤波处理,去除实验得到的数值中的毛刺。
MATLAB数值滤波处理方法有:首先关于fspecial函数的定义,fspecial函数用于建立预定义的滤波算子。其语法格式为:h = fspecial(type)h = fspecial(type,para)其中type指定算子的类型,para指定相应的参数;函数type的类型有:1、'average'averaging filter为均值滤波,参数为hsize代表模板尺寸,默认值为[3,3...

用matlab得到一个信号是用采样频率10KHZ采集的电流信号,想滤去其中的...
首先要明白,由你给的代码知道你是要设计数字低通滤波器,而你给的频率是模拟的,你需要将模拟的频率转换到数字,butter函数是用在数字中的函数,Wn应在0~1之间,即你写的2*pi*500是不可以的。具体程序可以这样写(去采样周期为T=1s,采样频率FS=1\/T=1hz)(1)设通带频率为400hz,截止频率为500...

matlab一维离散的数据序列如何进行低通滤波?
楼主你好 滤波要先设计滤波器,b,a代表滤波器设计的参数。一般可以使用巴特沃斯滤波器。例如低通滤波器的设计代码为:data = importdata('t2.txt');Time = data(:,1);SA = data(:,2);dtt=diff(Time);dt=sum(dtt)\/length(dtt);Fs=round(1\/dt);%采样频率 Wp = 5\/(Fs\/2); %...

如何运用MATLAB把数据的波动变得更小
滤波器,可以采用中值滤波。b=medfilt1(x,n); b是中值滤波后的数组,x是原始数据,n是滤波器尺寸大小。可以用n=5试试。

相似回答