Ottieni la posizione di un oggetto su una trama di Matlab
-
28-10-2019 - |
Domanda
Come è possibile ottenere, direttamente dalla finestra di comando MATLAB, la posizione (cioè le coordinate) di un oggetto (ad esempio una freccia, un rettangolo o una sim.) Che ho disegnato su una trama?
Soluzione
Di solito puoi farlo utilizzando le proprietà grafiche della maniglia. Per esempio:
Fare una trama
h = plot(1:10, rand(10,1));
Quindi ottieni i valori effettivi dei punti x = get (h, 'xdata') y = get (h, 'ydata')
Diversi tipi di oggetti hanno proprietà diverse, a volte devi esplorare. In tal caso questa sintassi è utile.
get(h) %This displays all available properties on `h` to the command window
Un bocconcino utile finale è il gco
("Ottieni Oggetto Current Object"), che fornisce l'impugnatura dell'ultimo elemento che hai tracciato o su cui hai fatto clic manualmente. Questo può aiutare se non sei sicuro da dove provenga l'oggetto tracciato.
Modificare:
Per trovare tutte le proprietà che sono discendenti di un oggetto, usa entrambi findobj
, o findall
. Per esempio:
findobj(gcf); %Returns all non-hidden, typical objects. This should be your first attempt.
findall(gcf); %Returns all children, even hidden object, such as titles, manually added annotations, and UI menus
Questa chiamata rimuove alcune annotazioni di interfaccia utente comuni
get(findall(gcf,'-not','type','uimenu','-not','type','uitoggletool','-not','type','uipushtool','-not','type','uitogglesplittool'),'type')
(Presumibilmente l'ultimo esempio potrebbe essere migliorato con un regexp adeguatamente progettato, ma non riesco a farlo funzionare in questo momento.)