Retrieving numbers present within an array by knowing the coordinates

3 visualizzazioni (ultimi 30 giorni)
Hi! I have a fairly easy question but whose error I can't figure out.
I have the array "image_DEF_number_pixel" and the coordinates (x,y) in "union". I would like to create a vector containing the values present in "image_DEF_number_pixels" based on the coordinate (x,y) present in "union".
For example:
--> line 129 of "union" has coordinates (202, 188)
--> the value I want to get in a new vector is 186 because at coordinate (202, 188) inside "image_DEF_number_pixel" there is number 186.
Here is the line of code I am using:
image_DEF_numero_pixel = importdata('image_DEF_numero_pixel.mat');
union = importdata('union.mat');
vector = image_DEF_numero_pixel(union);

Risposta accettata

Stephen23
Stephen23 il 14 Feb 2023
Modificato: Stephen23 il 14 Feb 2023
The simple and efficient MATLAB approach is to use SUB2IND:
SI = load('image_DEF_numero_pixel.mat')
SI = struct with fields:
image_DEF_numero_pixel: [512×512 double]
im = SI.image_DEF_numero_pixel;
SU = load('union.mat')
SU = struct with fields:
union: [946×2 double]
un = SU.union;
idx = sub2ind(size(im),un(:,1),un(:,2));
out = im(idx)
out = 946×1
188 194 182 199 198 198 191 192 191 178

Più risposte (1)

Torsten
Torsten il 14 Feb 2023
image_DEF_numero_pixel = importdata('image_DEF_numero_pixel.mat')
union = importdata('union.mat')
vector = arrayfun(@(x,y)image_DEF_numero_pixel(x,y),union(1:size(union,1),1),union(1:size(union,1),2))

Categorie

Scopri di più su Operators and Elementary Operations in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by