2017-08-14 7 views
1

で画像をプロットします。あなたは、私は、このようなNaN値は白matlab2tikz誤差IがNaN関数imagescコマンドによって値一部を有するマトリックス(「I1」)をプロットしてい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') 

にプロットされるべきであると設定されているコードで見ることができるように私はmatlab2tikzで、このような画像に変換する必要があります(スクリプトの実際の最後の行を参照)が、私は次のエラーを取得します:

エラー使用writepng> parseInputs(ライン349) 'α' の値が無効です。ダブル、UINT8、uint16の

代わりに、その型は論理的だった:入力は、これらのタイプの一つであることが予想されます。

誰かがこの問題を解決するのに役立つことができますか?おかげで事前

+0

NaNは、それが動作しませんプロットする理由である、プロットすることができ、これらのタイプのいずれかではありません。この問題を回避するには、NaNの値をいくつかの数値などで置き換えてみてください。 – jmoon

+3

@jmoon 'NaN'はプロットに使用できます。ポイントをプロットしないだけでよく使用されます。しかし、実際にデータをプロットするのではなく、画像の各点に透明度の値を割り当てることは、私があなたが何を参照していると信じているアルファデータに対しては有効ではありません。 – rayryeng

+0

申し訳ありませんが、私のコメントでは不明でした。明確にしてくれてありがとう! – jmoon

答えて

2

にあなたがしなければならないのは、doubleにあなたのOHPフィルムを変換しています。現在、配列のタイプはlogicalで、透明度データはdouble, uint8またはuint16のいずれかにしかなりません。あなたの配列の性質を考えると、あなたは0/1データ、ないtrue/falseをしたいので、NaNをある値が透明になるようにしながら、完全に表示するNaN以外で何をしたいです。

単に事実の後doubleに変換:

set(h,'alphadata',double(~isnan(I1))); 
関連する問題