Gnuplot使用两个二进制矩阵作为指示符绘制两个实矩阵

时间:2014-11-11 14:42:07

标签: matrix binary gnuplot

大家。

我有10 * 10个图像网格,它的值存储在两个10 * 10实矩阵X和Y中。我想将我的图像分成两部分,所以我有两个二进制指示符矩阵A,B表示哪个分区图像点属于,让我们假设A代表分区1而B代表分区2.

A(0,0)= 1表示点(0,0)在分区1中,其值存储在X(0,0)中,B(0,0)= 1表示点(0, 0)在分区2中,其值存储在Y(0,0)中。

如果A(0,0)= 1,我们有B(0,0)= 0,意味着每个图像点只能属于一个分区。因此,矩阵A和B是排他性的,我们有A + B =矩阵,所有1'

现在,我想将我的图像网格绘制成三维图形,因此x和y轴只是从0到9,z值存储在矩阵X和Y中。但我还需要包含二进制矩阵A和B告诉Gnuplot在绘制图像poit(i,j)时使用哪个值。这里,如果A(i,j)= 1,那么我使用X(i,j)作为其z值。否则,我使用Y(i,j)。

提前致谢。

1 个答案:

答案 0 :(得分:1)

请注意,gnuplot基本上处理包含逐行列的数据的数据文件。它可以完全在单行上对数据值进行计算。 使用存储在不同文件中的值进行计算是不可能的。

Gnuplot也不是计算机代数系统,也没有足够的能力来编程。

那么,您的数据是如何存储的?最好有一个包含行

的文件
x-coord  y-coord  X-value  Y-value  A-value   B-value

然后,您可以在gnuplot中使用它:

splot "MydataFile" using 1:2:($5==1?$3:$4)

如果您在文件中每10行后添加一个空行(以分隔每个"像素行"图片),您可能还会发现有用的

plot "MydataFile" using 1:2:($5==1?$3:$4) with image

因为它的输出更像是图像。

<强>解释

($5==1?$3:$4)

表示:如果第5列中的值等于1,则使用第3列的值,否则使用第4列的值。(好的,我们在这里需要矩阵B,因为A包含您需要的所有信息)