我不确定我是否可以正确表达这个问题,但在这里它会...
我想编写一个例子,其中小点具有根据它们移动的速度 - 而且,有一个随机运动叠加到"正确"运动.使用Processing
下面的代码,我得到以下动画:
右边的点应该朝向右下角,我对它的行为表现不错.问题是左点,它应该是"静态的" - 所以它只会显示"随机"运动"到位"; 但是,正如动画.gif所示,它最终会偏离其原始位置一段距离.随机速度计算如下:
this.randspeed.set(random(0,1)-0.5, random(0,1)-0.5);
Run Code Online (Sandbox Code Playgroud)
我猜想这random(0,1)-0.5
不会给我一个像高斯一样的"正态分布"(或者收敛到零); 但话又说回来,即使它是一个"正确的"高斯,我仍然可以有这样的"运气",所以说,正值[0:0.5]返回一整天,然后负值[-0.5:0]第二天返回,最后,它仍然是一个合适的高斯.
所以,我想,我正在寻找一种方法将(伪?) - 随机序列(如生成的那个)转换为伪随机序列random(0,1)-0.5
,但其中N个样本的平均总和(例如10)我不知道如何称之为 - 一个随机序列周期性地收敛到零,我猜?
请注意,我一直在尝试position
直接改变; 和保存position
与改变finalpos
,而不是-改变位置似乎更像是"自然的",平滑运动(特别是与模数帧的操作,所以一个新的随机速度没有分配每帧); 但是,它还允许随机噪声累积,并将点"推"远离其中心位置.另外,请注意我花了一些时间直到我可以在.gif上重现这一点,运行程序"live"似乎导致点更快地偏离原始位置(我已经阅读了一些关于硬件事件,如硬件磁盘写入用于/dev/random
在Linux上更改熵,但我真的不知道它是否相关).
另外,我想到在点位置周围设置某种虚拟边框,并对从边界出来的随机运动进行碰撞检测 - 但在我看来,这对于太多的工作(以及矢量操作的CPU周期)来说似乎是这种事; 我希望随机函数能以某种方式以一种更容易的方式"缓和",而不是.
那么,是否有建议的方法在有限区域的中心位置周围进行这种随机运动?
marbles.pde
:
import java.util.*; // added for Iterator;
ArrayList<Marble> marbles = new ArrayList<Marble>();
Iterator<Marble> imarb;
color mclr = #0000FF;
int RNDLIMIT = 2;
int framecount = 0;
void setup() {
size(600,400,P2D);
Marble m_moving = new Marble(width/2, height/2, 2, 2);
marbles.add(m_moving);
Marble …
Run Code Online (Sandbox Code Playgroud) 我原本以为这可能与gnuplot相同- X系列的开始 - Stack Overflow - 但我认为这稍微更具体一些.
既然我有兴趣找到"X系列的开头",可以这么说 - 我会试着用一个例子来澄清; 说你有这个脚本:
# generate data
system "cat > ./inline.dat <<EOF\n\
10.0 1 a 2\n\
10.2 2 b 2\n\
10.4 3 a 2\n\
10.6 4 b 2\n\
10.8 5 c 7\n\
11.0 5 c 7\n\
EOF\n"
# ranges
set yrange [0:8]
set xrange [0:11.5]
plot "inline.dat" using 1:2 with impulses linewidth 2
Run Code Online (Sandbox Code Playgroud)
如果你绘制它,你会注意到数据从x轴上的10开始:
现在,当然你可以调整xrange
- 但有时你会对"从0开始"的"相对位置"感兴趣,可以这么说.因此,人们希望看到数据在x轴上"向左移动",因此它从0开始.由于我们知道数据从10.0开始,我们可以明确地从第一列中减去该数据:
plot "inline.dat" using ($1-10.0):2 with impulses linewidth 2
Run Code Online (Sandbox Code Playgroud)
......这基本上就是诀窍.
但是说你不想在 …
考虑一个numpy
数组规范,通常用于指定matplotlib
绘图数据:
t = np.arange(0.0,1.5,0.25)
s = np.sin(2*np.pi*t)
Run Code Online (Sandbox Code Playgroud)
基本上,这会将数据点的x
坐标存储(x,y)
在数组中t
; 并且在数组中得到的y
坐标(在这种情况下为y = f(x)的结果sin(x)
)s
.然后,使用该numpy.nditer
函数获取连续的条目对t
并且s
表示(x,y)
数据点的坐标非常方便,如:
for x, y in np.nditer([t,s]):
print("xy: %f:%f" % (x,y))
Run Code Online (Sandbox Code Playgroud)
所以,我正在尝试以下代码段test.py
:
import numpy as np
print("numpy version {0}".format(np.__version__))
t = np.arange(0.0,1.5,0.25) ; print("t", ["%+.2e"%i for i in t])
s = np.sin(2*np.pi*t) ; print("s", ["%+.2e"%i for i in s])
print("i", ["% 9d"%i for i in …
Run Code Online (Sandbox Code Playgroud) 我有一个串行设备设置为环回(意味着它将回显它收到的任何字符),我想测量有效的吞吐速度.为此,我希望我可以使用time
,如同
time bash -c '...'
Run Code Online (Sandbox Code Playgroud)
哪个' ...
'将是一些我可以运行的命令.
现在,第一个问题是我想以2000000 bps的速度使用设备,所以我不能使用 ttylog或屏幕(它们似乎都只能达到115200 bps).但是,使用/dev/ttyUSB0
文件(使用文件重定向和cat
)似乎工作正常:
# initialize serial port
stty 2000000 -ixon icanon </dev/ttyUSB0
# check settings
stty -a -F /dev/ttyUSB0
# in one terminal - read from serial port
while (true) do cat -A /dev/ttyUSB0 ; done
# in other terminal - write to serial port
echo "1234567890" > /dev/ttyUSB0
# back to first terminal, I now have:
# $ while (true) do …
Run Code Online (Sandbox Code Playgroud) 我基本上想给我写一个bash脚本,在那里我使用heredoc生成几个大文件; 然后使用这些文件运行一些命令.
据了解,(显然)heredoc文件需要在命令运行之前生成 - 但是,在这种安排中令我恼火的是,在编写命令代码之前,我还必须编写'heredoc'语句代码.
所以我以为我会在一个函数中编写heredoc语句 - 但这里仍然存在同样的问题:第24章.函数说:
函数定义必须在第一次调用之前.没有"声明"该功能的方法,例如,在C中.
的确如此:
$ cat > test.sh <<EOF
testo
function testo {
echo "a"
}
EOF
$ bash test.sh
test.sh: line 1: testo: command not found
Run Code Online (Sandbox Code Playgroud)
然后我想也许我可以放置一些标签并跳转GOTO
,如(伪代码):
$ cat > test.sh <<EOF
goto :FUNCLABEL
:MAIN
testo
goto :EXIT
:FUNCLABEL
function testo {
echo "a"
}
goto MAIN
:EXIT
Run Code Online (Sandbox Code Playgroud)
...但事实证明BASH goto也不存在.
我唯一的目标是 - 我想首先编写脚本文件的"核心",这是一些五六个命令; 只有然后写在脚本文件中的定界符语句(可能有数百行); 首先拥有heredocs真的让我难以阅读代码.有没有办法实现这一目标?
这接近于使用GCC生成可读组件?,但我的上下文是avr-gcc
(并相应地avr-objdump
)Atmel(虽然,我想它将适用于GCC董事会).
问题是,我有一个多个.c和.cpp文件的项目; 最终被编译成可执行文件,其名称与'master'.cpp文件相同.在这个过程中,我可以通过两种方式获得汇编列表:
gcc
发出汇编列表源(参见Linux汇编和反汇编和简介)-S
; 在这种情况下,我得到一个文件,内容如下:... loop: push r14 push r15 push r16 push r17 push r28 push r29 /* prologue: function / / frame size = 0 */ ldi r24,lo8(13) ldi r22,lo8(1) call digitalWrite rjmp .L2 .L3: ldi r24,lo8(MyObj) ldi r25,hi8(MyObj) call _ZN16MYOBJ7connectEv .L2: ldi r24,lo8(MyObj) ldi r25,hi8(MyObj) call _ZN16MYOBJ11isConnectedEv ...
(还没有尝试过;但我想这段代码是可编译的/可构建的....)
objdump
使用该-S
开关发出汇编列表源; 在这种情况下,我得到一个文件,内容如下:... 0000066a <init>: void init() { …
我猜这对于那些了解Perl的人来说应该是显而易见的,但是我根本就没有得到它......我也猜测它与Perl范围内描述的问题有关«黑暗 - 但我不能在我的案例中应用任何问题.
无论如何,这是代码:
#!/usr/bin/env perl
# call with:
# ./test.pl
use strict;
my $tvars = "my \$varA = 1;
my \$varB = 2;
my \$varC = 3;
";
my @lines = split /\n/, $tvars;
foreach my $line (@lines) {
print "$line\n";
eval $line; warn $@ if $@;
}
#~ print "$varA\n"; # Global symbol "$varA" requires explicit package name at ./test.pl line 18.
#~ print "$varB\n"; # Global symbol "$varB" requires explicit package name at ./test.pl …
Run Code Online (Sandbox Code Playgroud) 我知道之前已经回答过类似的问题:
......但是,由于他们没有直接回答我的具体问题,我会再试一次.
我想知道,我如何覆盖两个postscript文件:一个 - 一个徽标:
...在另一个之上 - 图形背景:
....在Linux中使用命令行方法.
在此重要的是,图形背景最大程度地保留其原始内容.因此,如果我能以某种方式连接两个原始的postscript文件内容(见下文),我可能会感到最开心 - 但除此之外,我想知道命令行工具如何ghostscript
用于此目的.
这是更详细的问题 - 我想在PCB板印刷的顶部添加徽标.我kicad
用来开发PCB打印; 完成后,我导出一个带有各个图层的postscript文档.通常,我希望前面的铜层"镜像"; 我经常尝试将.ps输出加载到,比方说,inkscape
然后尝试在那里进行镜像.使用inkscape
也很方便,因为可以在那里轻松添加徽标(然后将打印和徽标一起镜像).
然而,使用inkscape
处理postscript输出是一个昂贵的操作(因为它需要一段时间inkscape
来加载,并进行镜像和保存)...虽然,这里的主要显示停止是:处理后,一些维度可能会在输出文件中略微改变inkscape
(当目标是打印小于1毫米宽的轨道时,它会产生很大的不同).
因此,假设kicad
s"Plot"命令有一个镜像选项 - 当然,对于我来说,直接从kicad
s"Plot"命令"镜像"图层打印要好得多; 输出再次是postscript文件.tmp-Front.ps
是这样一个(镜像的)postscript文件的示例.请注意,通常情况下,"铜"部分填充黑色 - 我基本上喜欢在它上面有一个白色徽标.
现在,因为这个打印已经"镜像" - 如果我想在它上面添加一个徽标,我最好还要镜像徽标.所以我开火了inkscape
; 和:
简而言之,我正在处理一个有问题的PDF,其中:
evince
由于缺少字体信息,无法在文档查看器中完全呈现;ghostscript
可以完全呈现相同的PDF.因此 - 无论ghostscript
填写空白的用途(可能是后备字形,或访问字体的不同方法) - 我希望能够ghostscript
用来生成("提取")输出PDF,其中几乎除了添加的字体信息之外,什么都不会改变,因此evince
可以以相同的方式呈现相同的文档ghostscript
.
因此,我的问题是 - 这是否可行; 如果是这样,那么命令行会是什么样的呢?
非常感谢任何答案,
干杯!
我实际上是在一个较旧的Ubuntu 10.04,我可能正在经历 - 不是一个错误 - 但安装问题evince
(缺少poppler-data
包),如Bug#386008中所述"由于"未知的字体标记,某些字体无法显示. ..:"Bugs:"poppler"包:Ubuntu.
但是,这正是我想要处理的内容,因此我将使用fontspec.pdf
附加到该帖子(" PDF触发错误. ",//v.)来演示问题.
evince
首先,我打开这个pdf的第3页evince
; 并evince
抱怨:
$ evince --page-label=3 fontspec.pdf
Error: Missing language pack for 'Adobe-Japan1' mapping
Error: Unknown font tag 'F5.1'
Error (7597): No font …
Run Code Online (Sandbox Code Playgroud) 我通常将其ghostscript
视为命令行工具; 然而,我从不停止对那里存在的大量设置和选项感到惊讶 - 这是因为这ghostscript
是一个完整的PostScript语言解释器(我经常忘记).
例如,在查询Ghostscript中输出设备的默认选项/设置(例如'pdfwrite'或'tiffg4') ; 一个人学习如何检索给定输出设备的默认选项.但是,我想知道的是 - 这些选项是否与所谓的PostScript词典相关?
或者,换句话说 - 什么是PostScript词典; 什么设施ghostscript
有,查询(并可能)修改这些数据?
bash ×2
c ×2
ghostscript ×2
linux ×2
postscript ×2
algorithm ×1
arrays ×1
assembly ×1
command-line ×1
dictionary ×1
eval ×1
fonts ×1
function ×1
gcc ×1
gnuplot ×1
goto ×1
java ×1
kicad ×1
loopback ×1
math ×1
numpy ×1
objdump ×1
pdf ×1
perl ×1
processing ×1
python ×1
random ×1
scope ×1
serial-port ×1
stack ×1
variables ×1