Matlab imshow omette NaN

Sto usando imshow() per visualizzare i dati ottenuti dalla differenza di due immagini in scala di grigi. Le immagini sono mascherate, vale a dire che ciascun pixel “posto sotto” la maschera ha il valore NaN . I dati sono rappresentati dalla mappa dei colors parula . Il problema è che imshow() considera NaN come zero e quindi i pixel mascherati sono rappresentati come blu. C’è un modo semplice per omettere i pixel mascherati o per visualizzarli in un colore che non fa parte della mappa colors (ad es. Bianco, grigio o nero)?

Preferirei che la soluzione si imshow() su imshow() poiché sarebbe più semplice includerla nel mio codice. Tuttavia, saranno apprezzate anche le soluzioni che usano pcolor , imagesc o simili.

È ansible impostare l’ AlphaData dell’object immagine come uguale a ~isnan(data) modo che i NaN vengano visualizzati come valori trasparenti.

 R = rand(10); R(R < 0.25) = NaN; him = imshow(R, 'InitialMagnification', 10000); colormap parula set(him, 'AlphaData', ~isnan(R)) 

inserisci la descrizione dell'immagine qui

Se si desidera un colore specifico, è ansible triggersre gli assi e impostare il colore degli assi in base al colore desiderato.

 axis on; % Make a red axis set(gca, 'XColor', 'none', 'yColor', 'none', 'xtick', [], 'ytick', [], 'Color', 'r') 

inserisci la descrizione dell'immagine qui

Se si utilizza pcolor , i valori NaN sono già considerati trasparenti.