For loop pass in unique rows to function
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Bewler
el 1 de Jul. de 2019
I have an array that is an X:4 double.
Column 1 of this array is the unique identifier labeled starting at 1 to n.
Example
[1,2.5,3,5 ; 1,3,4,5 ; 1,5,7,5 ; 2,4,5,6 ; 2,6,8,9]
I have a function that takes input normally as 3 columns (X,Y,Z).
I want to write a loop that takes the unique values of column 1 and pushes the rows unique(i:end of i, 2:4) for each unique i in the array that is the X:4
So from the above example it would first push rows 1:3,columns 2:4 to the function and then repeat the for loop to rows 4:5, columns 2:4 to the function.
0 comentarios
Respuesta aceptada
Stephen23
el 1 de Jul. de 2019
Editada: Stephen23
el 1 de Jul. de 2019
M = [1,2.5,3,5;1,3,4,5;1,5,7,5;2,4,5,6;2,6,8,9];
U = unique(M(:,1));
for k = 1:numel(U)
X = U(k)==M(:,1);
yourFunction(M(X,2:4))
end
2 comentarios
Stephen23
el 1 de Jul. de 2019
Editada: Stephen23
el 1 de Jul. de 2019
Here is one solution based around a cell array C that holds the output of each iteration, that should work for output matrices with three columns:
U = unique(M(:,1));
N = numel(U);
C = cell(1,N);
for k = 1:N
X = U(k)==M(:,1);
C{k} = yourFunction(M(X,2:4));
C{k}(:,4) = k;
end
A = vertcat(C{:});
A = A(:,[4,1:3]);
Note that you should not grow arrays inside a loop:
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!