大家。
我有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)。
提前致谢。
答案 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包含您需要的所有信息)