For loop pass in unique rows to function
조회 수: 7 (최근 30일)
이전 댓글 표시
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
채택된 답변
Stephen23
2019년 7월 1일
편집: Stephen23
2019년 7월 1일
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
Stephen23
2019년 7월 1일
편집: Stephen23
2019년 7월 1일
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:
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 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!