誰もが思い描く人生だと思います.
本稿では,これまで出来る限り楽をして生きてきた僕が,
楽をしてプログラムを書く一つの方法を提案します.
その方法は...
Pythonを使おう!
pythonを使うメリットとしては,比較的学習コストが低く,簡単にコーディングができるという点が挙げられます.
一言で言えば,
「気が向いたらpython使ってみたらどうでしょうか.」
という記事であります.
pythonの基本事項を列挙します.
・ファイルの拡張子は「.py」
・変数定義,型宣言はいらない.
・さらに文末のセミコロン「;」もいらない.
・コンパイルなしで実行できる.
・c言語での{}はインデントで表現する.
・ちなみにコメントアウトは「#」
既に投稿されている記事(ターミナルを電卓化)で,pythonをターミナル上で電卓として使用する方法がありました.
今回はこれをちょっと拡張して,
AWGNチャネルでのBPSK変調BER特性(理論値)
を出力してみます.
######################## # bpsk.py ######################## import math f1 = open('bpsk_ber.txt', 'w') for i in range(0, 11): EbN0 = pow(10, (i/10.0)) BER = (1.0 / 2.0) * math.erfc( math.sqrt(EbN0) ) print i, BER print >> f1, i, BER f1.close()
さて,これであとは実行するだけです.
ターミナル上で
python bpsk.pyと入力しましょう.
これだけで結果が一発で表示されます.
早すぎる,超便利.
以下,詳しく説明していきます.
(1) import math
C言語 --> #include <math.h>全く同義ですが,mathにある関数を用いる際は,
"math.func()"のように"math."を関数名の前に書く必要があります.
サンプルプログラムでは,
"math.erfc()"
を使っていますよね.
(2) for i in range(0, 11):
C言語 --> for(i = 0; i < 11; i++)これも同義です.
しかし,forの範囲がインデントによって管理されることに注意です.
今回のプログラムでは,
EbN0 = pow(10, (i/10.0)) BER = (1.0 / 2.0) * math.erfc( math.sqrt(EbN0) ) print i, BER print >> f1, i, BERがforの中身です.
(3) prinf i, BER
C言語 --> printf("%lf %lf\n", i, BER);もうこんなの見たらC言語書いてられません.
めちゃくちゃシンプルです.
(4) printf >> f1, i, BER
C言語 --> fprintf(f1, "%lf %lf\n", i, BER);これも楽ちん.
!最後にpythonを使うにあたって注意!
大規模なシミュレーションには向きません.
実行速度は遥かにC言語の方が速いので,普段の研究ではなかなか使えないかと.
筆者は理論値を出すときや,数値計算で使ってます.
何事もトレードオフですね.
0 件のコメント :
コメントを投稿