我正在开展一个学校项目,这是一个逻辑门的模拟。我可以轻松实现并运行模拟,但我需要帮助显示输出。
现在,我将所有内容打印到控制台,如下所示:
sample frequency: 50
###############################################
IN NOT(1) OUT
IN1:0 IN1:3 IN1:5
IN2:0 IN2:0 IN2:0
OUT:3 OUT:5 OUT:0
0 1 -1 -1
50 1 -1 -1
100 1 0 0
150 0 0 0
200 1 1 1
250 1 0 0
300 1 0 0
350 1 0 0 (IN = 1, delay is 1 so we can see
400 0 0 0 the correct output of NOT element in line 400 <-> 350 + 1*50)
450 1 1 1
500 1 0 0
550 1 0 0
600 1 0 0
650 0 0 0
700 0 1 1
750 1 1 1
800 1 0 0
850 1 0 0
900 1 0 0
950 1 0 0
1000 1 0 0
左边是,有模拟时间(步骤)。在每个步骤中,将打印出值并生成新的输入集。
其中有-1,这意味着未定义的输出。
第3行( IN NOT(1)OUT )表示有3个元素,1个输入,1个NOT门和一个输出。括号中的值表示元素的延迟,因此延迟值为 X 的元素将在X * sample_freq之后显示正确的输出(不包括0时间)。
平均值之后的行:
IN1 - 作为输入1
读取的节点的索引IN2 - 作为输入2读取的节点的索引
OUT - 输出节点的索引
在这种情况下,IN将其输出提供给节点#3。 NOT元素从节点#3读取其输入,并将一些输出提供给节点#5。该系统的总输出是OUT元素,从#5读取。
以下是指定拓扑的文件:
3 (number of elems)
IN 0 0 3 (no inputs for input element obviously)
NOT 3 0 5 (reads from #3 and outputs to #5)
OUT 5 0 0 (reads from #5 and this is the end point of the system)
显然可以有更多的元素,IN和OUT,但为了简单起见,我们坚持这一点。
我希望看到的结果是:X轴告诉模拟时间(0 - 1000,步长是50),y轴告诉系统中每个元素的输出值,元素写出它们的输出在另一方面,请参阅this图片作为示例。
您能告诉我如何创建这种gnuplot脚本,将我的应用程序的输出转换为所需的绘图吗?
谢谢!
答案 0 :(得分:0)
首先,我必须稍微改变应用程序的输出,所以它看起来像这样:
0 1 2 4
49 1 2 4
50 1 2 4
99 1 2 4
100 0 2 4
149 0 2 4
150 0 3 5
199 0 3 5
200 1 3 5
249 1 3 5
250 1 2 4
299 1 2 4
300 0 2 5
349 0 2 5
350 1 3 5
399 1 3 5
400 0 2 4
449 0 2 4
450 1 3 5
499 1 3 5
额外的sim时间步长使边看起来几乎是正方形,我还将每列分开2(将0添加到第2列,将第2列添加到第3列,将第4列添加到第4列,依此类推)它是一个在彼此之上绘制的,并且绘制它的简单命令是:
plot 'out.txt' using 1:2 with lines, 'out.txt' using 1:3 with lines, 'out.txt' using 1:4 with lines
加上一些xtics,设置ytics和其他化妆品
现在我必须处理用元素名称命名行和瞧。