complicated for loop with 2 requirements or constraints

1 回表示 (過去 30 日間)
Grace
Grace 2014 年 6 月 4 日
コメント済み: Grace 2014 年 6 月 4 日
Hi,I have
a=[1 2; 3 4; 5 6;7 8];
Suppose I want my result to have two sets of number, which set 1 is [1 2; 3 4; 5 6] and set 2=[3 4; 5 6;7 8].
result=cell(2,1);
for m=1:2
for i=0:1
k=1:3;
result{m}=a(k+i,:);
end
end
This output shows 2 similar set of numbers. What can I do? Do I make myself clear?

採用された回答

Roger Wohlwend
Roger Wohlwend 2014 年 6 月 4 日
Then do the following:
if m > 4
UT{m} = id(m-4:m-1,:)
end
  1 件のコメント
Grace
Grace 2014 年 6 月 4 日
Hi Roger, now I'm trying to modify my original id by sorting its column to get 2 new id as follows:
id = [ 1 3; 2 6; 3 2; 4 5; 5 1; 6 4; 7 7];
[r c]=size(id);
new_id=cell(c,1);
UT=cell(r*c,1);
for col=1:c
new_id{col}=sortrows(id,col);
for m=1:7
if m>4
UT{m} = new_id(m-4:m-1,:);
else
j=1:m-1;
a=new_id(j,:);
i=m:4;
b=new_id(i+3,:);
UT{m}=cat(1,a,b);
end
end
end
Then from that two new id, i want to run the if else statement to get UT, but now I have 2 new id, means that I will get 14 UTs. But if i run the code above, there is an error, I can't get what I wanted.
Can you help? Thank you.

サインインしてコメントする。

その他の回答 (1 件)

Roger Wohlwend
Roger Wohlwend 2014 年 6 月 4 日
In the second loop you first (when i = 0) save a matrix in result{m} and then you override it when (i = 1). So the inner loop has no effect.
I do not understand why you use loops at all. You could simply write:
result{1} = a(1:3,:);
result{2} = a(2:4,:);
Or if you want a loop:
for m = 1 : 2
result{m} = a(m:m+2,:);
end

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by