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);
Link for matlab_matrix.mat : https://drive.google.com/file/d/1TEwaK_w0GuQrT8vVUPB1BUCSSOYA2R6j/view?usp=share_link
How to rectify this error?
0 个评论
采纳的回答
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
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 Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!