Info
この質問は閉じられています。 編集または回答するには再度開いてください。
How to fix this loop?
1 回表示 (過去 30 日間)
古いコメントを表示
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 =
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/191586/image.png)
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??
0 件のコメント
回答 (1 件)
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.
この質問は閉じられています。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!