2017-08-14 70 views
1

我绘制的矩阵(“I1”)绘制图像通过于imagesc指令值。正如你可以在代码中看到我设置这样的NaN值应在白色matlab2tikz误差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的值来解决这个问题。 – jmoon

+3

@jmoon'NaN'可以用于绘图。它根本不绘制点,它经常被使用。但是,对于我相信您所指的数据的alpha数据无效 - 实际上不是绘制数据,而是为图像中的每个点分配透明度值。 – rayryeng

+0

对不起,我的评论不清楚。谢谢澄清! – jmoon

回答

2

所有你需要做的就是将您的胶片到double。目前,阵列的类型为logical,透明度数据只能是double, uint8uint16之一。鉴于您的阵列的性质,任何你想要的,所以你要0/1数据,而不是true/false即非NaN是完全可见的,而这是NaN值是透明的。

简单地转换为double后的事实:

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