I am receiving the error "Error using filter. Invalid data type. Input arrays must be numeric or logical." in the code

14 次查看(过去 30 天)
ecg = load('matlab_matrix.mat')
Fs = 200;
B_lp_1 = [1 zeros(1,5) -2 zeros(1,5) 1]/32;
A_lp_1 = [1 -2 1];
ecg_lp = filter(B_lp_1,A_lp_1,ecg); %Error here
ecg_lp = ecg_lp/max(ecg_lp);
How to rectify this error?

采纳的回答

Walter Roberson
Walter Roberson 2022-12-13
when you load() and assign the output to a variable, the output becomes a struct with one field for each input variable in the .mat file.
You are then passing that struct into filter, instead of accessing the data from the struct.
ecg_struct = load('matlab_matrix.mat', 'ecg');
ecg = ecg_struct.ecg;
  3 个评论
Walter Roberson
Walter Roberson 2022-12-13
ecg_struct = load('matlab_matrix.mat');
fn = fieldnames(ecg_struct);
if length(fn) ~= 1
fprintf(2, 'Warning: file contains %d different variables, arbitrarily picking the first: %s\n', length(fn), fn{1});
end
ecg = ecg_struct.(fn{1});

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by