Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

complicated for loop with 2 requirements or constraints

Asked by Grace on 4 Jun 2014
Latest activity Commented on by Grace on 4 Jun 2014

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?

0 Comments

Grace

Tags

Products

No products are associated with this question.

2 Answers

Answer by Roger Wohlwend on 4 Jun 2014
Accepted answer

Then do the following:

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

1 Comment

Grace 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
Answer by Roger Wohlwend 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

0 Comments

Roger Wohlwend

Contact us