Aus LinuxUser 04/2017

Mit Spigot auf der Kommandozeile rechnen (Seite 2)

Abbildung 3 zeigt den Ablauf. Sie müssen dazu das Skript entweder in der Form bash Skript aufrufen oder mit entsprechenden Rechten zum Ausführen versehen.

Abbildung 3: Ein kleines Shell-Skript demonstriert einige Funktionen von Spigot, unter anderem den Einsatz von Shell-Variablen als Teil der Anweisung.
Abbildung 3: Ein kleines Shell-Skript demonstriert einige Funktionen von Spigot, unter anderem den Einsatz von Shell-Variablen als Teil der Anweisung.

Konvertieren

Das Umrechnen zwischen Zahlensystemen erledigen Sie mit dem Tool über verschiedene Formen der Syntax. Die hier gezeigte funktioniert in jedem Fall:

echo Wert | spigot -bBasis Ausgabe 'baseBasis Eingabefd:0'

In Abbildung 4 finden Sie Beispiele für die gängigen Praxisfälle.

Abbildung 4: Das Umrechnen von Zahlen hin zu einem anderen Basiswert gelingt mit Spigot auf verschiedenen Wegen.
Abbildung 4: Das Umrechnen von Zahlen hin zu einem anderen Basiswert gelingt mit Spigot auf verschiedenen Wegen.

Frequenz berechnen

Das Exempel aus Listing 2 zeigt, wie Sie mit Variablen als Hochzahlen umgehen. Hier sehen Sie, dass die Variablen mittels Anführungszeichen isoliert sind, das e-12 beschreibt den Rest der Hochzahl. Mit dem Skript berechnen Sie die Frequenz eines Schwingkreises anhand der Spule (Induktivität, µH) und des Kondensators (Kapazität, pF). Abbildung 5 zeigt den Ablauf.

Listing 2

#! /bin/bash
#qrgrech.sh
echo "Schwingkreisberechnung, Ergebnis in MHz"
read -p "Induktivität in µH: " L
read -p "Kondensator in  pF: " C
echo "Induktivität: $L µH, Kondensator $C pF"
# Im Vorspann stellenrichtige Umrechnung für ISO-Einheiten auf H und F
echo "------------------------------"
qrg=$(spigot --rn -d50 "$L"e-6*"$C"e-12 | spigot --rn -d50 '(1/(2pi*sqrt(base10fd:0))/1000000)' --printf %10.3f)
echo "Frequenz $qrg MHz"
Abbildung 5: Spigot hilft beim Berechnen der Frequenz eines Schwingkreises.
Abbildung 5: Spigot hilft beim Berechnen der Frequenz eines Schwingkreises.

Rechenanweisung in Variablen

Sie können Anweisungen für eine Rechenoperation auch in einer Variablen unterbringen. Da die Möglichkeit besteht, dass ein Anwender mit negativen Zahlen rechnet, müssen Sie Variablen, die Zahlen führen, mit entwerteten Klammern umgeben (Listing 3). Abbildung 6 zeigt die Ausgabe mit zwei Kommastellen.

Listing 3

#! /bin/bash
#rechner.sh
read -p "     Erste Zahl: " a
read -p "Rechenanweisung: " op
read -p "    Zweite Zahl: " b
echo -n "$a $op $b ergibt "; spigot --rn -d50 \($a$op$b\) --printf %10.2f
Abbildung 6: Bei Bedarf speichern Sie eine Rechenanweisung in einer Variable.
Abbildung 6: Bei Bedarf speichern Sie eine Rechenanweisung in einer Variable.

Ergebnisse plotten

Wenn Sie das Berechnen des Schwingkreises etwas ergänzen, liefert das Skript sogar die nötigen Daten für ein Schaubild. Auf diese Weise ließen sich etwa abstimmbare Schwingkreise berechnen (Frequenzvariation durch Drehkondensator). Im Beispiel aus Listing 4 kommen außerdem die Kreiszahl (pi) und die Wurzelfunktion sqrt zum Einsatz.

Listing 4

#! /bin/bash
#vfo.sh
# Löschen evtl. vorhandener Ergebnistabelle
rm ergtab.txt
clear
echo "Berechnung Abstimmbereich LC-Schwingkreis"
echo "--------------------------------------------------"
read -p "              Spule: Induktivität in µH: " L
read -p "   Drehkondensator: höchster Wert in pF: " Cmax
read -p "Drehkondensator: niedrigster Wert in pF: " Cmin
# Cmin um 1 vermindern für for-Schleife
Cmin=$(echo $Cmin | spigot 'base10fd:0-1')
for (( C =Cmax; C > Cmin; C--)); do
  qrg=$(spigot --rn -d50 "$L"e-6*"$C"e-12 | spigot --rn -d50 '(1/(2pi*sqrt(base10fd:0))/1000000)' --printf %10.3f)
  echo "$C $qrg" >> ergtab.txt
done
gnuplot ergtab.plt
evince ausgabe.eps

Die For-Schleife gibt je Durchgang den um 1 verminderten maximalen Wert für die Kapazität (Cmax) des Drehkondensators an, bis der Minimalwert (Cmin) erreicht ist. Die Ergebnisse (Werte für Kapazität und Frequenz) landen in einer Tabelle. Mittels Gnuplot [4] erstellen Sie das Diagramm als EPS-Datei, die Sie dann mit dem Programm Evince anzeigen. Abbildung 7 zeigt den Ablauf mit dem Ergebnis.

Abbildung 7: Mit Spigot berechnen Sie nicht nur Daten, sondern geben diese bei Bedarf auch als Plot wieder aus.
Abbildung 7: Mit Spigot berechnen Sie nicht nur Daten, sondern geben diese bei Bedarf auch als Plot wieder aus.

Um die Grafik etwas ansprechender zu gestalten, schreiben Sie die passenden Anweisungen in eine Datei mit der Endung .plt (Listing 5). Dorthin kommen Angaben zu den Achsen, zum Raster und zur Beschriftung sowie das Format für die Ausgabe (hier: eps).

Listing 5

set term eps
set grid xtics mxtics ytics mytics linestyle 5
set sample 100000
set xtics 0,5
set mxtics 2
set ytics 0,1
set mytics 2
set xlabel "Kondensator (pF)"
set ylabel "Frequenz (MHz)"
set output "ausgabe.eps"
plot "ergtab.txt" with lines title "Frequenz (MHz)"
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 04/2017 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: