matlab - Access matrix value using a vector of coordinates? -


let's have vector:

b = [3, 2, 1]; 

let's have matrix this:

a = ones([10 10 10]); 

i want use vector b source of coordinates assign values matrix a. in example equivalent to:

a(3, 2, 1) = 5; 

is there easy way in maltab use vector source of coordinates indexing matrix?

you can converting vector b cell array:

b = num2cell(b); a(b{:}) = 5; 

the second line expand b comma-separated list, passing each element of b separate array index.

generalization

if b contains coordinates more 1 point (each row represents 1 point), generalize solution follows:

b = mat2cell(b, size(b, 1), ones(1, size(b, 2))); a(sub2ind(size(a), b{:})) 

here b converted cell array, each cell containing coordinates same dimension. note a(b{:}) won't produce result want (instead, select elements between top left , bottom right coordinates), we'll have intermediate step of converting coordinates linear indices sub2ind.


Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

javascript - jQuery .height() return 0 when visible but non-0 when hidden -