试图实现butterworth对数据的高通和低通滤波器但是会出错

时间:2014-06-25 20:21:25

标签: matlab user-interface filter filtering

我正在尝试创建一个GUI。在这个GUI中,我有一个弹出菜单,用于选择要应用的过滤器类型,以及一个列表框,供用户选择截止频率。数据以每秒500个样本记录,目前为[1,800,000x1单一]

我的代码目前看起来像这样:

%get cutoff frequency from listbox
contents = cellstr(get(hObject,'String'));
cutoff_frequency=contents{get(hObject,'Value')};

data=handles.data1;
sampling_rate=500;
handles.sampling_rate=sampling_rate;
Wn=cutoff_frequency/(sampling_rate/2);
filter=handles.filter;

if filter=='High Pass'
  [B,A]=butter(2,Wn,'high')
  data=filter(B,A,data);
  figure
  plot(data);

end

错误:

我收到错误:“对于'高'过滤器选项,Wn必须是1个元素向量” FIXED ,将cutoff_frequency从字符串转换为数字

cutoff_frequency=str2num(cutoff_frequency)

当我从butter函数中删除'high'并修复了第一个错误时,我也收到了这个错误:“下标索引必须是真正的正整数或逻辑。”

我需要帮助对数据应用高通和低通滤波器。

如果有人也可以告诉我如何确定应该使用哪种订单过滤器

1 个答案:

答案 0 :(得分:0)

我找到了修复

当我在代码中稍后将其用作函数时,MATLAB并不喜欢使用filter作为变量。 通过将我的过滤器变量更改为filter_choice,一切都顺利进行。