How to index first element of an arbitary sized matrix?
조회 수: 1 (최근 30일)
이전 댓글 표시
I have a matrix and I need to index the first dimension but I don't know the size of the matrix. Is there a way to do this in a generic way rather than hard code each case. I am aware I could do this with eval but I try and steer clear of using this function where possible.
Example:
ind_left = 25;
ind_right = 66;
% For a 2-D matrix it would be this
A = rand(100,100); % sample 3-D input matrix
B = A(ind_left:ind_right,:);
% For a 3-D matrix it would
A = rand(100,100,100); % sample 3-D input matrix
B = A(ind_left:ind_right,:,:);
% For a 4-D matrix it would be ...
댓글 수: 3
채택된 답변
Dyuman Joshi
2023년 11월 8일
편집: Dyuman Joshi
2023년 11월 8일
%Example
ind_left = 25;
ind_right = 45;
vec = ind_left:ind_right;
n = 5;
A = rand(50*ones(1,n)); % sample n-D input matrix
size(A)
%Manually
B = A(vec,:,:,:,:);
size(B)
%Generalised method
C = reshape(A(vec,:),[numel(vec) size(A, 2:ndims(A))]);
size(C)
%Check for equality
isequal(B,C)
댓글 수: 3
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!