complicated for loop with 2 requirements or constraints

1 次查看(过去 30 天)
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 CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by