Linux 的周期函数发生器
在我的工作中,我需要文本流形式的数学函数样本。例如,我需要一个程序,它可以在离散时间点生成正弦函数值并将其打印到 stdout 中。然后我需要以某种形式组合这些样本,例如对移动了某个相位的两个样本求和。因此,我可以将我的问题一分为二:
是否有一种相当标准的方法来生成具有给定参数(频率、相位、幅度、时间步长)的数学函数样本,例如正弦波 -以具有两列的简单文本流的形式:时间和函数值?我知道 Perl/Tcl 中的简单脚本可以完成这项工作,但我想知道通用的解决方案。
什么程序可以操纵这些流?我了解
awk
,但是当我有多个 流作为输入时,我可以使用awk
做什么?例如,如何计算两个或三个正弦样本的和或乘积?
我使用的是 Debian Linux,并且我更喜欢 Unix 方式,即每个程序只执行简单的任务并且做得很完美,并且单独程序的结果可以由另一个程序组合。
谢谢。
In my work I need samples of mathematical functions in the form of text streams. For example, I need a program which generates values of sine function at discrete time points and prints them into stdout
. Then I need to combine these samples in some form, for example sum two samples shifted by some phase. So I can split my question may by two:
Is there a pretty standard way to generate samples of mathematical function, such as sine, with given parameters – frequency, phase, amplitude, time step – in the form of simple text stream with two columns: time and function value? I know that simple script in Perl/Tcl can do this work, but I'd like to know the gereric solution.
What programs can manipulate these streams? I know about
awk
, but what can I do withawk
when I have several streams as an input? For example, how can I make a sum or product of two or three sine samples?
I'm using Debian Linux and I prefer The Unix Way, when each program does only simple task and does it perfectly, and results of separate programs may be combined by another program.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 bc 进行简单的数值计算。请参阅手册页。可以使用 Octave 完成更复杂的计算,这是一个免费的 Matlab 克隆。
例如,这计算了一个间隔的值:
这计算了 sin 值:
并且可以使用
join
命令来连接两个文件:但是在整个计算中最好留在 Octave 中:
You can do simple numeric calculations with
bc
. See the man page. More complicated calculations can be done withoctave
, which is a free Matlab clone.For example this calculates the values of an interval:
This calculates the sin values:
And the
join
command can be used to join the two files:But it is probably better to stay in Octave for the whole computation:
有用的一般文本操作程序:
我认为使用 perl 脚本生成值没有问题。使用 bc 脚本当然也是一种选择。
General text manipulation programs that would be useful:
I see no problem with using a perl script to generate the values. Using a bc script would of course also be an option.
您查看过 bc 吗?
Did you have a look to bc ?