How can I save the results of every loop in a for-loop with two counters

1 Ansicht (letzte 30 Tage)
Hi Matlab Masters, I have my Code like this:
a=logical ([1]);
b=logical ( [ 1 1 0
1 1 1
0 1 1]);
c=logical ( [ 1 0 0 0
0 1 1 0
0 1 1 1
0 0 1 1]);
d=logical ( [ 1 1 1
1 1 1
1 1 1]);
E={ a
b
c
d};
for i= 1:numel(E)
for j=1:numel(E{i}(:,1))
a=numel(find(E{i}(j,:)))<2
end
end
i use the For-loop to check out, if the number digit "1" in each row of E is smaller as 2. My problem is : With the for-loop I always receive the result "a" as the result of the last loop. like this:
a =
1
a =
0
a =
0
a =
0
a =
1
a =
0
a =
0
a =
0
a =
0
a =
0
a =
0
But I want to save the value of "a" in every loop (here 11 rows means 11 loops) in a vector. Like this:
a = [1
0
0
0
1
0
0
0
0
0
0]
Or clearly, I want to do these steps to E :
  1. If a cell of E contains only one elment (1 x 1) (here it is E(1) ), do nothing to it
  2. Else , check it out, if the number of the digit "1" in each row of each cell in E is smaller as 2 so that in the end I have a result like this:
a = [ 0
0
0
0
1
0
0
0
0
0
0]
thanks for your help in advance !

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 9 Jul. 2013
a0 = cellfun(@(x)sum(x>0,2) < 2,E,'un',0);
a = cat(1,a0{:});

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by