Extract specific values from a 3D matrix?

14 views (last 30 days)
Ivan Gufler
Ivan Gufler on 31 Jan 2023
Edited: Fangjun Jiang on 31 Jan 2023
Hello,
I have a 3d matrix (call it A) of the following dimension: 9000, 9, 2. From this matrix I want to update two values in the following positions:
row_index=[4000, 3000]
col_index=[4,5]
Basically I want:
A(row_index, col_index,:)=B
where B is a 2x1 vector.
I could do this within a loop but I'd like to vectorize this operation.
Does anybody have a suggestion on how to do this in an efficient way?

Answers (1)

Fangjun Jiang
Fangjun Jiang on 31 Jan 2023
Edited: Fangjun Jiang on 31 Jan 2023
A(sub2ind(size(A),row_index,col_index))=B
For example
A=false(6,6,6);
row_index=[4, 3];
col_index=[4,5];
B=[true;true];
A(sub2ind(size(A),row_index,col_index))=B;
sum(A,'all')
ans = 2

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!