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 中查找有关 Language Support 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by