How to combine 2 for loops

7 vues (au cours des 30 derniers jours)
Grace
Grace le 5 Juin 2014
Commenté : David Sanchez le 5 Juin 2014
Hi, I have
id = [ 1 3; 2 6; 3 2; 4 5; 5 1; 6 4; 7 7];
I will get two new_ids by sorting its column,
for col=1:c
new_id{col}=sortrows(id,col);
end
I want to get 2 results from each of the new_id respectively. This means that I will have in total 4 results.
for m=1:2
result{m}=id(m:m+1,:);
end
How can i combine all this? Thank you.
  3 commentaires
Grace
Grace le 5 Juin 2014
For example,
id = [ 1 3; 2 6; 3 2; 4 5; 5 1; 6 4; 7 7];
for m=1:2
result{m}=id(m:m+1,:);
end
The code above gives me two sets of array,result{1} and result{2}. But now i sort my initial array which i denoted as "id" by sorting its column, and this will gives me two new_id, I sort it by following:
id = [ 1 3; 2 6; 3 2; 4 5; 5 1; 6 4; 7 7];
for col=1:c
new_id{col}=sortrows(id,col);
end
After that i want to run my first "for loop" to this two new_id by using the same code
for m=1:2
result{m}=id(m:m+1,:);
end
Means that i need to combine this two loops in order for me to do that. Do i make myself clear?
Grace
Grace le 5 Juin 2014
Modifié(e) : Grace le 5 Juin 2014
Here is the code that I created:
id = [ 1 3; 2 6; 3 2; 4 5; 5 1; 6 4; 7 7];
[r c]=size{id);
for col=1:c
for m=1:2
new_id=sortrows(id,col);
result{m}=new_id(m:m+1,:);
end
end
My problem here is the output only shows me the loop when col=2, it overwrite the output for col=1, what can I do in order for me to keep both of the results for col=1 and 2?

Connectez-vous pour commenter.

Réponse acceptée

David Sanchez
David Sanchez le 5 Juin 2014
You were not very clear in your explanation, but I think you want this:
id = [ 1 3; 2 6; 3 2; 4 5; 5 1; 6 4; 7 7];
c=size(id,2);%I'm guessing c = Nº columns in id
result = cell(2); % pre-allocation of 2x2 cell array to hold data
for col=1:c% col=2
new_id{col}=sortrows(id,col);
for m=1:2% m=2
result{m,col}=new_id{col}(m:m+1,:);
end
end
You will end up with a cell array result whose columns contain the result of your first loop
  2 commentaires
Grace
Grace le 5 Juin 2014
Hi David,
I can't run the above code, it shows me
Cell contents assignment to a non-cell
array object.
Error in
new_id{col}=sortrows(id,col);
What is the problem?
David Sanchez
David Sanchez le 5 Juin 2014
I tested it in Matlab 2012a and it works. Try with a temporal variable in between
id = [ 1 3; 2 6; 3 2; 4 5; 5 1; 6 4; 7 7];
c=size(id,2);%I'm guessing c = Nº columns in id
result = cell(2); % pre-allocation of 2x2 cell array to hold data
for col=1:c% col=2
temp = sortrows(id,col);
new_id{col} = temp;
for m=1:2% m=2
result{m,col}=new_id{col}(m:m+1,:);
end
end
if it does not work, paste the error and the value of temp

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by