필터 지우기
필터 지우기

selecting indices in a matrix and setting the rest to zero

조회 수: 20 (최근 30일)
bsriv
bsriv 2023년 3월 14일
댓글: bsriv 2023년 3월 15일
Hi,
I have a 414x22 matrix A and an array of indices
idx=[99 93 149 150 152 96 97 139 94 135 137 136 138 305 299 329 330 258 302 303 319 300 315 317 316 318]'
I would like to have all values in the matrix other than those in the rows of the indices (across columns) set to zero but I'm stuck on the code. It should be something like
new_idx=ismember(1:numel(A),idx)
A(~new_idx)=0
However that obviously treats the matrix as an array so only the first column had the numbers...

채택된 답변

Torsten
Torsten 2023년 3월 14일
A = rand(5,3);
idx = [2 4].';
idx_left = setdiff(1:size(A,1),idx)
A(idx_left,:) = zeros(numel(idx_left),size(A,2))

추가 답변 (1개)

Walter Roberson
Walter Roberson 2023년 3월 14일
new_A = zeros(size(A), 'like', A);
new_A(idx,:) = A(idx,:);

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by