complicated for loop with 2 requirements or constraints

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?

 采纳的回答

Then do the following:
if m > 4
UT{m} = id(m-4:m-1,:)
end

1 个评论

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 个)

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

类别

帮助中心File Exchange 中查找有关 Loops and Conditional Statements 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by