久々のプログラミングネタです
SWRの計算ですで反射係数が求められます。
それを2乗して100掛けたものが、ロス割合ですので、下記の様な計算式になります。
perlでは浮動小数点が苦手なのでそのままprint関数せずにprintf関数を使って浮動小数点を明記してあげます
下記の様になります
なお、四捨五入も下記の様なルーチンです
アマチュアではSWRが3迄は許容範囲と言われる所以です、私は2.5以下に抑えています。
perl で計算 1〜10迄0.1刻みです
下記ソースをフィルにコピペして、ファイル名はswr.plとし、ターミナルから
perl swr.pl
これで画面にSWRリストが出力されるはずです。試してみてネ
my $hansya_keisuu; my $swr; for ($swr=1; $swr<10; $swr+=0.1){ $hansya_keisuu = ($swr-1) / ($swr+1); my $loss = ($hansya_keisuu**2) * 100; $loss = round($loss,1); printf ("swr:%.01f loss:%.01f%\n",$swr,$loss); } ### 四捨五入 ------------------------------------------------- sub round { my $val = shift; # 四捨五入する数 my $col = shift; # 小数点以下のどこまで残すか my $r = 10 ** $col; my $a = ($val > 0) ? 0.5 : -0.5; return int($val * $r + $a) / $r; }
小数点以下削除(int)整数表示
swr=1 loss=0 % swr=1.1 loss=0 % swr=1.2 loss=0 % swr=1.3 loss=1 % swr=1.4 loss=2 % swr=1.5 loss=4 % swr=1.6 loss=5 % swr=1.7 loss=6 % swr=1.8 loss=8 % swr=1.9 loss=9 %
swr=2 loss=11 % swr=2.1 loss=12 % swr=2.2 loss=14 % swr=2.3 loss=15 % swr=2.4 loss=16 % swr=2.5 loss=18 % swr=2.6 loss=19 % swr=2.7 loss=21 % swr=2.8 loss=22 % swr=2.9 loss=23 %
swr=3 loss=25 % swr=3.1 loss=26 % swr=3.2 loss=27 % swr=3.3 loss=28 % swr=3.4 loss=29 % swr=3.5 loss=30 % swr=3.6 loss=31 % swr=3.7 loss=33 % swr=3.8 loss=34 % swr=3.9 loss=35 %
swr=4 loss=36 % swr=4.1 loss=36 % swr=4.2 loss=37 % swr=4.3 loss=38 % swr=4.4 loss=39 % swr=4.5 loss=40 % swr=4.6 loss=41 % swr=4.7 loss=42 % swr=4.8 loss=42 % swr=4.9 loss=43 % swr=5 loss=44 %