Filtering a matrix column with different cutoff

I’ ve looking for a method to filter each column of data (101X62) with specific cutoff (1X63). Please, could someone indicate me the problem? Thanks B
x=data
fs=60;
fc=cutoff;
for idx = 1:numel(x);
[b,a] = butter(2, fc/(fs/2));
y = filter(b,a,x); %// output
end

3 Comments

currently you are looping over each element of x instead of each column, i.e. you want
Ncols = size(data,2);
for idx = 1:Ncols
% filter next column
end
Also, Xnew does not seem to be defined, and you would of course need to change the cutoff frequency in each loop iteration (right now, it's constant). But your general structure looks ok to me otherwise. What seems to be the problem?
Hi Ced, cutoff frequency (1x62) are different for each column.
Yes, but since you are designing your filter in the loop, you can select a different cutoff for each loop iteration, right? Have a look at Image Analyst's answer, he wrote it out for you. You of course still have to define your cutoff vector.

Sign in to comment.

 Accepted Answer

Perhaps you meant this:
[rows, columns] = size(data);
y = zeros(size(data));
fs = 60;
for k = 1 : columns
thisColumn = data(:, k); % Extract this one column
fc = cutoff(k); % Extract this one cutoff value.
% Determine filter parameters.
[b,a] = butter(2, fc/(fs/2));
% Do the filtering, and put result into column k of the output y
y(:,k) = filter(b, a, thisColumn);
end

3 Comments

Thanks for your answer Mat lab show error: [rows, columns] = data
Try
[rows, columns] = size(data);
where data is whatever you called your 2-D array.
Thanks, is working now.

Sign in to comment.

More Answers (0)

Asked:

on 26 Mar 2016

Commented:

on 26 Mar 2016

Community Treasure Hunt

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

Start Hunting!