Info

此问题已关闭。 请重新打开它进行编辑或回答。

How to fix this loop?

1 次查看(过去 30 天)
Aswin Sandirakumaran
关闭: MATLAB Answer Bot 2021-8-20
C = {1,2,3,1,4,6};
%for i = 1:length(C)
List = cell(size(C)); %creating empty list
for i = 1:length(C)
if isequal(C{i}, 1)
List(1) = C(i);
else
List(2) = C(i);
end
end
I GET A OUTPUT OF LIST AS =
BUT MY OUTPUT SHOULD LOOK LIKE:
IN cell 1 = [1,1]
IN CELL 2 = [2,3,4,6]
THE PROBLEM IS IT STORES THE LAST ELEMENT ENCOUNTERED , BUT IT SHOULD STORE ALL ELEMENTS ENCOUNTERED. HOW TO FIX THIS??

回答(1 个)

Stephen23
Stephen23 2018-6-30
编辑:Stephen23 2018-6-30
Simpler with a numeric vector:
>> V = [1,2,3,1,4,6];
>> List = {V(V==1),V(V~=1)};
>> List{1}
ans =
1 1
>> List{2}
ans =
2 3 4 6
Note: to get V from the cell array C:
V = [C{:}];
But if you really want to write inefficient code using a loop:
List = cell(1,2);
for k = 1:numel(C)
if isequal(C{k}, 1)
List{1} = [List{1},C{k}];
else
List{2} = [List{2},C{k}];
end
end
which produces exactly the same output less efficiently using more lines of code.
  1 个评论
Stephen23
Stephen23 2018-6-30
编辑:Stephen23 2018-6-30
Try this:
C = {1,2,3,1,4,6};
List = cell(1,2);
for k = 1:numel(C)
if isequal(C{k}, 1)
List{1} = [List{1},C{k}];
else
List{2} = [List{2},C{k}];
end
end
giving
>> List{1}
ans =
1 1
>> List{2}
ans =
2 3 4 6

此问题已关闭。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by