Eliminate of empty matrix on cell structure.

1 view (last 30 days)
Hi everbody.
I have 1*1724 cell structure and i want to find which cells are not empty matrix.
for l=1:1:1724
if buyuk_elemanlar{1,l}==[];
clear buyuk_elemanlar{1,l}
elseif
???
end
end
I don'nt know how type matlab code after the "elseif"?

Answers (2)

Image Analyst
Image Analyst on 29 Nov 2015
Try it like this:
if isempty(buyuk_elemanlar{1,l})
% Cell is empty....
  1 Comment
Volkan Yangin
Volkan Yangin on 29 Nov 2015
Thanks a lot Image Analyst, your solution is very helpful for me now. :-)

Sign in to comment.


Jan
Jan on 29 Nov 2015
Use isempty instead of | == []|. clear is not useful to remove a single element. Do not remove elements of the cell inside the loop. Because then the loop index does not match the cell index anymore.
Different solutions:
m = false(1, 1724);
for k = 1:1724
if isempty(buyuk_elemanlar{1, k})
m(k) = true;
end
end
buyuk_elemanlar(m) = [];
Or:
m = false(1, 1724);
for k = 1:1724
m(k) = isempty(buyuk_elemanlar{1, k})
end
buyuk_elemanlar(m) = [];
Or:
m = cellfun('isempty', buyuk_elemanlar);
buyuk_elemanlar(m) = [];
The meaning of the "elseif ???" cannot be guessed. What should happen when the cell is not empty?
  1 Comment
Volkan Yangin
Volkan Yangin on 29 Nov 2015
Edited: Volkan Yangin on 29 Nov 2015
Thank you. Jan Simon. When i used elseif function, it is not useful for solve this problem, too. This only changes the for ex. 1x24cell to "l" Now i will use your solution with not using elseif and clear functions and i think, problem will be resolved by your codes. Thanks a lot again. :-)

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!