## complicated for loop with 2 requirements or constraints

### Grace (view profile)

on 4 Jun 2014
Latest activity Commented on by Grace

on 4 Jun 2014

### Roger Wohlwend (view profile)

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?

## Products

No products are associated with this question.

### Roger Wohlwend (view profile)

on 4 Jun 2014

Then do the following:

```if m > 4
UT{m} = id(m-4:m-1,:)
end
```

Grace

### Grace (view profile)

on 4 Jun 2014

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.

### Roger Wohlwend (view profile)

on 4 Jun 2014

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
```