Matrix Gnuplot:制作用矩阵生成的地图的gif?

Matrix Gnuplot:制作用矩阵生成的地图的gif?,matrix,plot,gnuplot,gif,Matrix,Plot,Gnuplot,Gif,我用100矩阵15x15生成了一个.dat文件,现在我想创建一个gif,显示从第一个矩阵到最后一个矩阵的演变。它们都是带有1或-1的矩阵,因此如果我想表示初始矩阵,我可以复制并粘贴到另一个文件中,然后将其放入gnuplot: plot 'firstmatrix.dat' matrix with image set terminal gif animate delay 20 set output 'evolution.gif' set xrange [0:15] set yrange [0:15

我用100矩阵15x15生成了一个.dat文件,现在我想创建一个gif,显示从第一个矩阵到最后一个矩阵的演变。它们都是带有1或-1的矩阵,因此如果我想表示初始矩阵,我可以复制并粘贴到另一个文件中,然后将其放入gnuplot:

plot 'firstmatrix.dat' matrix with image
set terminal gif animate delay 20
set output 'evolution.gif'
set xrange [0:15]
set yrange [0:15]
N=15
nframes=5
do for [i=1:int(nframes)] {
  plot 'evolution.dat' every ::(i-1)*N+1::i*N matrix with image
}

要创建gif,我尝试在gnuplot中执行此操作:

plot 'firstmatrix.dat' matrix with image
set terminal gif animate delay 20
set output 'evolution.gif'
set xrange [0:15]
set yrange [0:15]
N=15
nframes=5
do for [i=1:int(nframes)] {
  plot 'evolution.dat' every ::(i-1)*N+1::i*N matrix with image
}
我打算从文件的第一行读到第15行,然后从第16行读到第30行,依此类推

我只放了5帧以更好地看到结果,我得到gif显示第一帧中的第一个矩阵,仅显示白色帧

错误消息是此消息的四倍:

warning: Skipping data file with no valid points
因此,第一帧(第一个矩阵)的数据得到了很好的处理,但其余的数据没有得到很好的处理。所以这就是我的问题,我不知道为什么它处理好第一个,而不是更多

提前谢谢


你已经非常接近了。但我也花了一些迭代和测试。。。 显然,从矩阵切片行块需要
每:::rowFirst::rowLast
(注意开头的3个冒号)。然后gnuplot显然将整个矩阵的行索引作为y坐标。由于要使其“相互重叠”,因此需要模运算符
%
(选中
帮助运算符二进制
)。如果矩阵之间用一两条空行隔开,可能会容易一些

代码:

### animated matrix data
reset session

### create some random data
set print $Data
    do for [n=1:20] {
        do for [y=1:15] {
            Line = ''
            do for [x=1:15] {
                Line=Line.sprintf("% 3g",int(rand(0)*2)*2-1)
            }
            print Line
        }
    }
set print

set terminal gif animate delay 30
set output "tbMatrixAnimated.gif"
unset key 
N=15

do for [i=1:20] {
    plot $Data u 1:(int($2)%N):3 matrix every :::N*(i-1)::N*i-1 with image 
}
set output
### end of code
结果:(仅20个矩阵)


问题解决了吗?答案可以接受吗?任何反馈都将不胜感激。对不起,我想对你的答案做更多的研究,试图添加一些东西,但几天过去了,我忘了这么做。问题解决了,非常感谢,我真的很感谢你向我解释得如此详细,我可以向你保证,这对我帮助很大。好的。很高兴听到这个消息。然后请检查答案是否被接受,表明问题已解决。