gpt4 book ai didi

arrays - 用于简单正弦波发生器的Bash脚本阵列算法的问题

转载 作者:行者123 更新时间:2023-12-03 08:16:41 24 4
gpt4 key购买 nike

一般来说,我对bash脚本和linux还是比较陌生。我正在尝试向压力调节器发送一系列快速命令(相隔半秒),通常我使用bash脚本通过简单的方脉冲来执行此操作。但是,我似乎无法为正弦波形脉冲获得正确的语法。我找不到使用实际正弦函数的方法,但是一系列小的离散步骤也可以正常工作。

这是我的脚本:

#!/bin/bash

Pmax="90"
Pmin="10"
Rcor="7.91" #This converts the pressure setting into the devices scaled range.
declare -a Sinewave20=(0 0.309 0.588 0.809 0.951 1 0.951 0.809 0.580 0.309 0 -0.309 -0.588 -0.809 -0.951 -1 -0.951 -0.809 -0.588 -0.309)
Amplitude=$(( $Pmax-$Pmin ))
Offset=$(( $Pmin+$Amplitude/2 ))

# 6 cycles of Sinewave20 corresponds to 1 min of .1 hz sine wave
for i in {0..6}
do
# Let's send the commands for a 20 pt sine wave
for x in "${!Sinewave20[@]}";
do
Value=$(( $Amplitude*$Rcor*$Sinewave20[x]+{Offset*$Rcor ))

echo -e "SET ${Value}\r" > /dev/ttyUSB1
sleep 0.5
done
done

这将导致以下错误消息:

第18行:80 * 7.91 * 0 [x] + {Offset * 7.91:语法错误:无效的算术运算符(错误标记为“.91 * 0 [x] + {Offset * 7.91”))

我尝试了多种书写方式,但没有找到一种有效的方式。更改压力的命令很简单:

echo -e“SET 100 \ r”>/dev/ttyUSB1

最佳答案

Bash算术仅限于整数。

考虑使用内置支持浮点数的脚本引擎。轻量级awkbc,或一种full语言:Python,Perl等。

请参阅:How do I use floating-point division in bash?https://unix.stackexchange.com/questions/40786/how-to-do-integer-float-calculations-in-bash-or-other-languages-frameworks/40787#40787

关于arrays - 用于简单正弦波发生器的Bash脚本阵列算法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59187404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com