2017-08-14 2 views
1

Je suis en train de tracer une matrice ("I1") qui a des valeurs NaN grâce à la commande imagesc. Comme vous pouvez le voir dans le code que j'ai mis que ces valeurs NaN doivent être tracées en blancerreur matlab2tikz tracer une image avec alphadata

I = magic(10); 
I1 = NaN(10); 
I1(4:6,4:6) = I(4:6,4:6); 
f1 = figure(); 
h = imagesc(I1); 
colormap jet; 
set(h,'alphadata',~isnan(I1)) 
axis tight; 
axis equal; 
axis on; 
matlab2tikz('file.tex') 

Je dois convertir cette image matlab2tikz (voir en effet la dernière ligne du script) mais j'obtenir l'erreur suivante: Erreur lors de l'utilisation de writepng> parseInputs (ligne 349) La valeur de 'alpha' n'est pas valide. L'entrée attendue est l'un de ces types: double, uint8, uint16

Au lieu de cela, son type était logique.

Quelqu'un peut-il aider à surmonter ce problème? Merci d'avance

+0

NaN est aucun de ces types qui peuvent être représentées graphiquement, ce qui explique pourquoi complotaient il ne fonctionnera pas. Essayez contourner ce problème en remplaçant les valeurs pour NaN avec un certain nombre ou quelque chose comme ça. – jmoon

+3

@jmoon 'NaN' peut être utilisé pour le traçage. Il ne trace tout simplement pas le point et il est assez souvent utilisé. Cependant, il n'est pas valable pour les données alpha dont je crois que vous faites référence - pas réellement le tracé des données mais l'attribution d'une valeur de transparence pour chaque point de l'image. – rayryeng

+0

Désolé, n'était pas clair dans mon commentaire. Merci de clarifier! – jmoon

Répondre

2

Tout ce que vous avez à faire est de convertir vos transparents en double. À l'heure actuelle, le tableau est de type logical et les données de transparence peuvent uniquement être l'un de double, uint8 ou uint16. Compte tenu de la nature de votre tableau, vous voulez que tout ce qui n'est pas NaN soit entièrement visible alors que les valeurs NaN doivent être transparentes, donc vous voulez 0/1 données, pas true/false.

convertir simplement à double après le fait:

set(h,'alphadata',double(~isnan(I1)));