Error using == Matrix dimensions must agree.

Im trying to remove bad epochs from a dataset.
I've previously substituted every bad epoch with [] inside a cell array, looking like this:
The cell array is called combine1 and is a 400x1 cell array.
i use the following code to try and remove the empty cell array elements for good
for i = 1:length(combined1)
if combined1{i} ==[]
combined1(i)=[]
else
end
end
however i get the error:
"Error using ==
Matrix dimensions must agree."
Sadly i cant change the previous preprocessing of the data into the cell array, so i need a way to change this array.
Anyone who can spot the mistake?

 采纳的回答

You don't need a loop, try this:
idx = cellfun(@isempty,combined1);
combined1(idx) = []
"Anyone who can spot the mistake?"
You should have used isempty instead of comparing two matrices with incompatible sizes. Array size compatibility is explained here:
In short, arrays are compatible if for every dimension one of these is true:
  • one of the arrays is scalar size for that dimension
  • both of the arrays have the same size for that dimension.
Consider the two arrays that you are comparing: one has size 62x769, the other has size 0x0. Are they compatible? (hint: no)
You would also run into problems because you are trying to remove array elements from the array that you are iterating over. There are two common ways to avoid this:
  1. create a logical mask and remove the elements after the loop,
  2. loop over the elements backwards.

1 个评论

Thanks that solved it
And the explanation was very helpful as well.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Matrices and Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by