日々ブログ

当サイトは、アフィリエイトプログラムにより商品をご紹介しています

レーダー方程式についておさらい

大学生時代に学んでから、また最近使うことがあったので、復習代わりに記述していこうと思います。
無線工学とか電波工学とかで使用する式です。

レーダー方程式とは

レーダーで受信する電力を計算するための式です。
電磁気の理論を用いて導出できて分かりやすいので非常に重要な式です。
レーダーがどの距離にあるターゲットを検出できるのかや、逆にターゲットを決めたうえでアンテナ形状を決めるために使う式です。
受信電力 P_ {\mathrm{r}} が、送信電力  P_ {\mathrm{t}} ・アンテナ形状( G_ {\mathrm{t}}, A_ {\mathrm{e}} )・距離(4 \pi {R}^2) ・ターゲットの形状\sigmaの掛け算で決まるというめちゃくちゃシンプルな式ですね。

 \displaystyle
P_\mathrm{r}=P_\mathrm{t} \frac{G_\mathrm{t} A_\mathrm{e} \sigma}{(4 \pi R^2)^2}
波の振る舞いを表した式では無い

よくある間違いとして、電磁波の振る舞い(伝搬)について記述したものでは無いので、途中の電力は計算できないので注意が必要です。
こうした電力を求めたい場合は、波の振る舞いについて考慮する必要があるので、モーメント法とかレイトレーシングを用いて簡易的に計算しましょう。
厳密に言えば、マクスウェルの方程式から電磁波の伝搬式を解かなければならないのです。
途中の電波が伝搬する仕組みはどうでもいいから、送信した電力がどれだけの大きさで返ってくるかだけに注目することで得られる式というわけです。

導出してみる

導出するためのモデル図は下のような感じです。
アンテナから距離Rに物体がある状況ですね。

導出前に下の条件が成り立つとします。

  • ターゲットは点とみなすことができ、形状は考えなくてよい
  • ターゲットによって電波が吸収されることはないこと

まず、 電磁波をどの方向にも球面上に広がって放射する等方性アンテナについて考える。 このとき、ターゲットに入射する電力の大きさは、球面上に広がるので、送信電力を球の面積で割ることで求まり、下式で与えられる。

 \displaystyle
P_\mathrm{in}=\frac{P_\mathrm{t}} {(4 \pi R^2)}

 P_ {\mathrm{in}} で入射した電波のうち、ターゲットによって反射する電力の大きさ P_ {\mathrm{out}} は、散乱断面積との積で表され、下式で与えられる

 \displaystyle
P_\mathrm{out}= \sigma P_\mathrm{in} = \frac{ P_\mathrm{t}} {(4 \pi R^2)} \sigma

反射波を距離Rだけ離れた受信アンテナに受信する電力は、電磁波は入射時と同じく球面上に広がるので下式で与えられる。

 \displaystyle
P_\mathrm{r}=\frac{P_\mathrm{out}} {(4 \pi R^2)} A_{\mathrm{e}}

受信アンテナに到達する電力のうち、受信できる電力は有効開口面積との積で決まるので、受信電力は

 \displaystyle
P_\mathrm{r}=P_\mathrm{t} \frac{A_\mathrm{e} \sigma}{(4 \pi R^2)^2}

実際には、等方性アンテナではなく、特定の方向に電波を送信するアンテナを使用するのでその利得を考慮すると、

 \displaystyle
P_\mathrm{r}=P_\mathrm{t} \frac{G_\mathrm{t} A_\mathrm{e} \sigma}{(4 \pi R^2)^2}

となる。

仮定の意味

ターゲットの形状

まずは、ターゲットの形状についての仮定です。
電波が反射する瞬間、ターゲットの表面では波の位相が揃います。
高校生などで習うホイヘンスの原理ですね。
物体の形状を考えると、位相が揃う面っていうのは物体の一部だけになって、反射が複雑になるので散乱断面積では表現しきれなくなります。
たとえば、同じ物体であっても近いと一部からしか反射しませんし、遠くにあると全体から反射します。
物体との距離によって物体の反射特性が変わり、求めるには複雑な計算が必要となります。
(散乱断面積は形状を考えなくて十分遠い位置で物体の形状を考えたときの値となります) なので、計算を簡単化するための仮定です。

電波の吸収

次に、電波の吸収です。
電波が物体に当たって反射するとき、表面で反射するわけではなく物体に一旦吸収されてから、大部分が入射した方向と同じ方向に返ります。
下記のページが参考になりました。
実際にはこの吸収の際に、電波の電気エネルギーが熱エネルギーなどに変わるのでその分反射するエネルギーが減ります。
吸収率は室温などでも変わるので、計算できないので考えないことにしたわけですね。

t-sato.in.coocan.jp

なぜ2Rで距離の2乗では無いのか

私も最初は不思議だったのですが、電波が往復すると考えて2Rと考えるのは誤りのようです。行きと帰りで電波は同じことが起きると考えるのが正解ですね。
レーダー方程式では、電波は物体に反射するとき、表面でそのまま跳ね返るのではなく、一旦電波は物体に吸収されてから、吸収したエネルギーを全方向に再放射すると考えます。

(全方向では無く、入ってきた電力がどの程度入射方向と同じ方向に返すかを示したものが散乱断面積です。)

仕組みとしてはアンテナと同じように電力が入力されてそれに応じて電波が放射されるのと同じですね。 なので、行きが(4 \pi {R}^2) なので、帰りも(4 \pi {R}^2) として、それらの積である距離の4乗に反比例することとなります。

【暮らしのお話】MGEXストライクフリーダムを作った(素組み)

先日訪れたガンダムベースでMGEXのストライクフリーダムガンダムを手に入れることができました。
ガンダムSEEDフリーダムの映画を見に行った帰りに、あったので非常に幸運でした。
今も品切れが続いていますもんね。
Amazonの転売価格は収まるところを知らない。
普段作るのがHGシリーズなので

とりあえず中身を確認

とりあえず中身を広げてみました。

ガンプラは値段とパーツ数が比較してるから良いですよね。
値段が安いものは早く組めるし、ネアンが高いものは組むのに時間がかかる。
加えて、値段が高いと組み上げたときのクオリティが高いのが良い。

ランナー立てが付属している

簡易ではありますが、ランナー立てが付属しています。
MGはランナーの種類が多いので、これがあるだけで作業効率がかなり上がります。
複数のランナーを出したりしまったりするだけで結構時間食いますから。
立てられる本数は4つなので少ないですがかなり役立ちました。

種類の異なる金色が好き

早速組み立てに入りましたが、金色のパーツが3種類あってこだわりを感じます。
左から、ゴールド・ピングゴールド・ホワイトゴールドですね。
他のガンプラだとゴールドはせいぜい1種類ですから、これだけでも豪華さが伝わる。

脚のあたりがこれら3つが折り重なっていて楽しみながら作れました。
シンプルなゴールドがやっぱり光かがやいてきれいですね。

豊富な金属パーツ

プラモデルなので、金属は基本無いのですが、 金属の光沢を持たせたステンレスシールが散りばめられます。

外装は無いけどこれだけで満足

商品パッケージにもよく採用されている外装をつけていない骨格だけの状態。
初めて見た人からすると、もはやガンダムなのかどうかすらわからないですが、メカメカしい感じが良い。
メダロットのティンペットみたいな感じで、ロボット好きとしてはたまらない。
説明書どおりに作ると、骨格だけの状態を作れるのでこれが魅力の一つなんでしょうね。

写真撮りながら不思議だったのが、どういうわけか手の甲にあるプラスチックパーツはつけたままなんですよね。
公式サイトとか取り扱い説明書の写真を見ても付いているですよね。

外装をつける

内装が出来上がったので外装をつけていきます。
上半身だけ外装をつけました。
外装を少しずつ組み上げていくので、ガンダムがどんどん組み上がっていくのが他のガンプラを組み立てるのとは違いました。

シールを貼り付けるのが厄介

組み立てる中で一番難しかったのがシールですね。
ペンチの刃先と同じくらいの大きさのシールを10箇所くらい貼らないとだめなんですよね。
手先は正直言って不器用な部類なのでめちゃくちゃ苦戦しました。
小さすぎて2つほど紛失しました。
ありがたいことにシール自体に余裕があったので救われました。
たぶん、失くす前提なんでしょうね。

完成

ようやく完成しました。
金属感は正直失われてしまいましたが、ガンダムとしてはこちらの方がやっぱり格好いい。
MGEXというだけあってやっぱり組むのは相当時間かかりますね。
合計すると20時間くらい費やしたかな。
ストライクフリーダムといえば、やっぱりオープニングのポーズこのポーズですね。

【ラーメンのお話】1杯500円で食べれる博多ラーメン山笠に行ってきた(神戸三ノ宮)

神戸の三ノ宮に行ったときによくいくラーメン屋さんです。 値段もリーズナブルで通いやすいです、

場所は東門街の路地

場所は東門の脇に入ったところにあります。

目印はこの看板です。

飲み屋街のすぐ近くなので、飲み会帰りにも行きやすい立地です。
看板に〆とあるのでまさしくって感じですね。

朝まで営業

営業は夜だけの営業で夕方から朝の5時まで営業してます。
私は、8時頃にお邪魔しましたが、比較的席も空いていました。

おすすめは1杯500円の豚骨ラーメン

全体的に安いですが、豚骨ラーメンがとくに安い。
ワンコインで食べれるところって本当に希少!
しっかりとした豚骨ラーメンだと800円から1000円するところ多いですからね。
昨今、値上げラッシュが続いているので非常にありがたい。

出てきたのがこちら!
しっかりとした豚骨って感じです!

美味しくいただきました。

コロナ禍開けてから新店舗

【プログラミングのお話】viteでbuffer をインポートできないときの対処法

過去に、viteでelectronを使用していたときに困ったので、メモ代わりに記載しておきます。

viteではbufferをインポートできない

javascript上では、import と書いてあるのですが、requireをサポートしていないというエラーが出ています。requireがbufferの内部で使われていることによるエラーですね。

webpackではインポートできる

歴史の古いwebpackでは問題なくインポートできます。
このあたりは、さすが成熟したフレームワークって感じですね。
viteの方は書き方について厳格ということでしょうか。
性能を重視したviteがwebpackより汎用性が低いのはある程度仕方が無いことでしょうか。

拡張プラグインをインストールすることでimport エラーが解消する

vite-plugin-node-polyfillsをインストールすることで解決しました。

npm install -D vite-plugin-node-polyfills

上のプラグインをviteの設定ファイルに記述します。

上記を追加したあと無事に画面が映るようになりました。

下記の記事を参考にしました。

stackoverflow.com

失敗事例:browserlifyをかける

node.js専用に実装されたjavascriptをブラウザでも動く方法としてbrowserlifyがあります。
簡単に言うと、node.js固有のライブラリや書き方をブラウザで動くように自動で置き換えてくれる仕組みですね。
こちらを試して見たのですが結論から言うと駄目でした。
どうも、webpack向けの書き方に変換するようで、viteでは禁止されている構文が含まれてしまってインポートエラーが起きます。

browserify.org

メモ:browserlifyの使い方

せっかく、調べたので個人用のメモとしてbrowserifyの使い方をメモしておきます。 まずは、グローバル領域にインストール

npm install -g browserify

対象のスクリプトファイルを第一引数に-oのあとに生成後のファイルパスを入力します。

browserify target.js -o result.js

【暮らしのお話】20 周年記念のSEEDガンプラ作った(素組み)

ガンダムベースへ行ったら、「機動戦士ガンダムSEED 20周年記念MSセット メタリック ガンプラ プラモデル」があったので購入しました。
例によってamazonでも売られてるんだけど、案の定の転売価格ですね。
店舗で買えてありがたい。

3体分あるので中身も豪華

さすがに、HG1体・RG2体分入っているので多いですね。
フリーダム、ジャスティス、プロヴィデンスとSEEDシリーズの最終3機体が揃ってるので満足。
プロヴィデンスだけHGなのが不遇な感じがしたんですけど、調べて見るとプロヴィデンスだけRGシリーズが販売されていないんですね。
ラスボス機の扱いとしては可哀想な気もする。

メタリックの質感がいい

今回入っているのは、全部メタリック加工されていてパーツの光沢がほどこされています。
ジャスティスのパーツのメタリックが一番好き。

さっそく、機体として一番好きなフリーダムから組み立ててみます。
足を組み立てただけでつま先あたりのメタル感があったので記念に撮影。
ちなみに白色の部分はとくにメタリックはされていないようですね。
白までメタリックだとキラキラしすぎなんかな。

下半身まで組み立てると、白部分が多いのでメタル感はあまりないですが、 胴体部分の赤色部分がコントラスト効いてる。

全体組み上げました。
初めてのRGだったので10時間くらいかかった。
専用の月形の台座🌒さっそく搭載しましたが、羽部分がめちゃくちゃ大きい。

お次はプロヴィデンス
HGなので組立時間はかなり短く、3時間くらいで組み上げました。
ソードとシールドが一体になってるんですよね。
ビームライフルとソードを構えるポースが好き。

続いてジャスティス。
あまりイメージは無いけど2刀流。

3体揃うとこんな感じ。
もっと色んなポーズを取りたかったんだけど、台座に3体同時に指すのが結構むずかしいんですよね。
隣の機体に当たったりと結構調整が難しい。

結構高いキットだったけど、専用台座もついてて置き物として完成度が高いから満足な買い物でした。

【プログラミングのお話】GMO FXで為替価格を取得する(python)

最近知ったのですが、GMOがFXの価格取得APIを公開していたので早速使ってみました。

OWANDA JAPANがAPIでは先行

余談になりますが、今まではOWANDA 証券というアメリカのFX会社がAPIを公開してたんですが、月間で10万円くらい取引していないと使えなかったりと制限があったんですよね。 なので、口座開設してから使えるようになるまで数ヶ月かかったりと正直使い勝手が悪い。 GMOは公開してすぐに使えるので、かなり便利です。

早速価格を取得してみる

公式ドキュメントにかかれている通りですが、requestsのモジュールでURLにGETリクエストを送信するだけです。

import requests
import json

endPoint = 'https://forex-api.coin.z.com/public'
path     = '/v1/ticker'

response = requests.get(endPoint + path)
print(json.dumps(response.json(), indent=2))

実行すると、取引できる通貨の価格がjson形式で返ってきます。
これ以上無いというくらい扱いやすいAPIですね。
python だけでなく、javascriptHaskellまで取得方法が公開されているので、お好きな言語で自由に注文アプリが作れそうです。

ドルについて保存してみる

これだけだと物足りないので、1分ごとに保存してみます。
取得した保存結果は日かつ1時間ごとにフォルダ分けします。
記事を書いときながらなんですが、サーバーは共有物なのでむやみに負荷をかけるようなAPIの使い方はせず、マナーよくご使用ください。

時刻ごとに保存フォルダを作成するので、フォルダ名は下のような感じ。

import datetime

# 現在時刻を取得
target_time=datetime.datetime.now()

# 現在時刻から保存フォルダ名を作成            target_folder="./static/currency/"+target_time.strftime("%Y")+"/"+target_time.strftime("%m")+"/"+target_time.strftime("%d")+"/"+target_time.strftime("%H")

target_path=str(target_time.strftime('%Y%m%d%H%M%S'))+'.json'

上のフォルダがない場合は作成したいので、osモジュールでフォルダ作成

if not os.path.exists(target_folder):
                os.makedirs(target_folder)

あとは、60秒ごとに紹介したAPIを実行する処理と組み合わせるだけです。
完成形はこんな感じです。

import requests
import json

import time
import datetime
import os

if __name__=="__main__":
    endPoint = 'https://forex-api.coin.z.com/public'
    path     = '/v1/ticker'
    while(True):
        try:
            target_time=datetime.datetime.now()
            target_folder="./static/currency/"+target_time.strftime("%Y")+"/"+target_time.strftime("%m")+"/"+target_time.strftime("%d")+"/"+target_time.strftime("%H")
            if not os.path.exists(target_folder):
                os.makedirs(target_folder)
            target_path=str(target_time.strftime('%Y%m%d%H%M%S'))+'.json'
            response = requests.get(endPoint + path)
            with open(target_folder+"/"+target_path, 'w') as f:
                json.dump(response.json(),f, indent=2)
        except Exception as e:
            print(e)
    
        time.sleep(60)

基本的には標準モジュールしか使用していないので、上のコードをコピーして使えば問題ないかと。
Linux とかだとdaemon 化すれば何かエラーが起きても放っておけるようになります。

【暮らしのお話】ラゴウのガンプラを作ってみた

ガンダムSEED FREEDOM公開されましたね。 といっても、早1ヶ月ほど経ちそうですが。
最近すっかりガンプラにハマってしまいました。

原作見ながらガンプラ作るの楽しい

映画のために原作をamazon prime で見返していたのですが、ただ見かえすのもあれなのでガンプラ作りながら見てました。
作っているガンプラが作中に出てくるとテンション上がる。
懐かしさもあるし、子供のときはお金も無いので自由に買えなかったですからね。
映画公開もあって毎週色んなSEEDのガンプラが出てきてお店に通うの楽しいです。

ラゴウのガンプラ作った

近くのジョーシンで売ってたので買ってしまいました。
パッケージがカッコいい。
アニメでは5話くらいしか登場しなかったんだけど、ちゃんとガンプラ化してるんですね。

完全な素組みですが、組み立てるとこんな感じです。

アニメ観るだけでは気づかなかったんですが、ヒヅメがちゃんとあるんですね。
プラモデル作ると、こういった細かな点に気づけるのが楽しい。


四足歩行で背中にビーム砲がついているのが特徴の期待ですね。
写真で取ると、切り取りあとが結構目立つ。
肉眼だと光の加減もあってあまり目立たないんですが。
きれいに切り取れるようになりたい。

裏側はこんな感じ。
この機体ひっくり返されると何もできなくなりそう。
足ジタバタするしかないんじゃないかな。
自分の組み方が悪かったのかもしれないけど、結構足が取れやすい。
上手に組めばそうならないんだろうか。


関節部分のキャタピラで走行するポーズも取れます。

ガンプラは品薄が続いている

ガンプラですが品薄が続いているようで、なかなか買えない商品も多いんですよね。
たまたま、ジョーシンに行ったらラゴゥがあったので良かったですが、次に訪れたときにはなかったので人気なんだろうな~。
amazonで見ても、品切れみたいだから。