人に聞けない痔の悩み、これでスッキリ >>

初心者です。
急に仕事でカルマンフィルタを扱うことになって困っています。
初心者ように詳しく書かれた書籍・文献を至急教えてください。
よろしくお願い申し上げます。

A 回答 (1件)

以下のURLを参考にしてみてください。




http://www1.accsnet.ne.jp/~aml00731/kalman.pdf#s …カルマンフィルタ'

http://www.coronasha.co.jp/np/result.do?keyword= …
    • good
    • 3
この回答へのお礼

ありがとうございました。

お礼日時:2008/04/14 22:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルでノイズ値を除去する方法。

エクセルでノイズ値を除去できませんか。
ノイズ値除去をしたく、ネットで調べるとフーリエ変換という言葉が出てきます。
しかし、今一よくわかりません。
具体的には、
「2、5、7、5、8、21、6、10」という8個の数値があった場合に、
「21」をノイズ値として除去したいです。
実際にできるのでしょうか。
やり方を教えてください。宜しくお願いします。

Aベストアンサー

#1です.

3σの外を切るような乱暴な方法とか,
はたまた,外れ値は自動的には除去できないとか,無責任な回答があったので,
修正しておきます.

私は,「ノイズを除去しても欠測値にはしない」という立場で書いてきましたが,
除去でよいのなら,次のような取り除き方があります.

まずベースラインを補正します.
これは例えば,小学生の身長のように,学年に比例する観測値なら
学年に比例する分を取り除き,一定信号に基準化する作業です.

次に全体のヒストグラムを作ります.
これが,フーリエ変換のような作業だと考えて下さい.

運よく二山になったら,山の隙間のどこかに閾値(しきい値)をとって,上側の山を切り落とします.
これはローパスフィルタのような作業です.

二山にならず,肩のこぶのようになっていたら,
ここから先はエクセルでは無理かと思いますが,
ガウス分布やガンマ分布をあてはめて,二山をフィットします.
次にそれらの関数を使って,閾値を決めます.
閾値は,第1種の過誤(α)と第2種の過誤(β)が同じになるように決め,
原信号の犠牲比率とノイズの混入比率を同等にします.
次に,閾値から上側を切り落とします.

このように,ノイズの除去には原信号の犠牲が伴い,
それに対する配慮が必要であることを分かって頂けたと思います.
3σの外を切るような乱暴な話ではありません.

#1です.

3σの外を切るような乱暴な方法とか,
はたまた,外れ値は自動的には除去できないとか,無責任な回答があったので,
修正しておきます.

私は,「ノイズを除去しても欠測値にはしない」という立場で書いてきましたが,
除去でよいのなら,次のような取り除き方があります.

まずベースラインを補正します.
これは例えば,小学生の身長のように,学年に比例する観測値なら
学年に比例する分を取り除き,一定信号に基準化する作業です.

次に全体のヒストグラムを作ります.
これが,フーリエ変換のよ...続きを読む

Qジャイロセンサを用いた角度の算出について

現在二足歩行ロボットを製作しているのですが、ボディ剛性が低いのとモーターを増やしすぎた(RC用のサーボを26個使用しています)ためか、直立状態でも姿勢が安定しないことから、姿勢の安定化のためのフィードバック用にジャイロセンサを利用しようとしたのですが、多々の問題から上手く角度が算出できずに困っています。ジャイロセンサを扱った経験のある方がいらっしゃいましたら御指導願います。
マナーが悪くて恐縮なのですが、同様の質問を下記のURLでしています。
http://oshiete1.goo.ne.jp/qa4561017.html
上記のURLでいただいたアドバイスを元に、現在はサーボ1個をジャイロを動かすために使用し、マイコンのA/Dで値を取得してexcelで計算という作業を繰り返しています。

開発環境は下記の様になります。
・ジャイロセンサ
→村田製作所製圧電振動ジャイロENC-03R(秋月電子製圧電振動ジャイロキットをそのまま使用し、オペアンプの出力をマイコンのA/Dに直結)
印加電圧:3.38V(マイコンに印加している電圧をそのままセンサに分岐)
静止時出力:約1.41V(たまたまかもしれませんが手元にある2個のジャイロキットは大体これ位出力しています)
・マイコン
→SH7144F(秋月電子製SH7144Fマイコンボード(12.5MHz))
クロック設定PΦ=25MHzシングルチップモード
・コンパイラ
→GCC

・現在行っていること
(1)SH7144のA/Dを10bit、PΦ/8で連続スキャンモードにし、CMTを8msec(センサの応答20msecの2.5倍でサンプリング)で割り込みさせてA/Dの結果をUARTでPCに出力。
(2)UART割り込みでサーボを90°回転。このときサーボ回転開始時と停止時に"S"と"E"をPCに出力し、サーボの回転時間を計算できるようにしておく。
(3)SH7144からのUART出力をPCのハイパーターミナルでテキストキャプチャして結果をexcelに入力。
(4)excelにてA/Dの結果→電圧→角速度→角度を計算。同時にサーボの回転時間と角度から平均角速度を算出して比較。

現在抱えている問題
(1)角速度計算結果について
今回使用しているジャイロキットの場合、角速度を求める式は下記の式であっているでしょうか?キットの回路は村田製作所から出ている増幅回路例と同じです。
ENC-03Rのカタログ
http://​www.murata.co.jp/catalog/s42.pdf​
角速度=(A/D出力-静止時出力)*(3.38/1024)/(感度*ローパスフィルタの増幅度)
※静止時出力=静止時のA/D出力をあらかじめメモして代入
 感度=0.00067[V/deg/sec]
 ローパスフィルタの増幅度=10[倍](カタログの回路図より直流増幅度)
参考URL
http://okwave.jp/qa3523603.html?ans_count_asc=0
http://www.hokutodenshi.co.jp/PUPPYSupportPage/soft/status/status.html

(2)センサーからの出力について
・他の人のホームページを見た感じのセンサの出力
        
                /\
              /    \
↑センサ出力    /       \
静止電圧___/           \
                         \/ ̄ ̄ ̄
    →時間
参考URL
http://tkstechnology.web.fc2.com/robot/system/enc_03.html
・私の持っているジャイロキットの出力
        
                /\
              /    \
↑センサ出力    /       \
静止電圧___/           \
                         \       / ̄ ̄ ̄
                           \    /
                            \  /
                             \/
    →時間

上記のような出力のせいか、積分の式が間違っているのか、または別の問題か積算していくうちに角度の計算結果が0付近に戻ってしまいます

(3)積分について
数値積分の表記は下記のようであっているでしょうか。
C風表記
kakudo = kakudo + (kakusokudo_s + kakusokudo) * (t / 2);
kakusokudo_s = kakusokudo;
(上記をタイマで繰り返す)
※kakudo:角度(初期値0)[deg]
 kakusokudo_s:一回前のサンプリング時の角速度(初期値0)[deg/sec]
 kakusokudo:サンプリングした角速度(初期値0)[deg/sec]
 t:サンプリングタイム[sec]
excel風表記
角度 = 1セル前の角度 + (1セル前の角速度 + 角速度) * (サンプリングタイム / 2)
(2)の問題で、時間がたつにつれて計算結果が0付近になってしまうのも問題なのですが、サンプリングタイムに0.008[sec]を代入しても、角度の値が出てこなくて困っています。

現在二足歩行ロボットを製作しているのですが、ボディ剛性が低いのとモーターを増やしすぎた(RC用のサーボを26個使用しています)ためか、直立状態でも姿勢が安定しないことから、姿勢の安定化のためのフィードバック用にジャイロセンサを利用しようとしたのですが、多々の問題から上手く角度が算出できずに困っています。ジャイロセンサを扱った経験のある方がいらっしゃいましたら御指導願います。
マナーが悪くて恐縮なのですが、同様の質問を下記のURLでしています。
http://oshiete1.goo.ne.jp/qa4561017.ht...続きを読む

Aベストアンサー

ANo.2,3です。
製作お疲れ様です。長文のお礼をありがとうございます。
私もいつか2足歩行ロボットに挑戦したいとは思いつつ、今の私の知識では難しいことが多く、いただいたお礼に応えられそうもありません。

ただ、お礼を読ませていただいてフト思ったことがあります。

私の場合はロボットの進行方向を制御させる上で機体が現在どの方向を向いているかを知る必要があったので、ござは承知で角速度を積分してヨー角を計算させたわけです。

ですが、質問者さんは2足歩行ロボットの姿勢制御用にジャイロを使いたいわけですよね?ロボットがふらついた時にシャンとさせる、あれですよね。

だとしますと、わざわざ回転角度の絶対値まで計算させる必要があるのかな?と思った次第です。
むしろ瞬時の角速度信号をそのまま(もちろん最適の係数はかけるとして)サーボにフィードバックしてやればよいのでは?とおもうのですが、いかがでしょう。

それでしたら、ジャイロ出力回路は回路例のままでハイパスフィルタを入れておいたほうが良いと思います。出力のドリフトや低周波ノイズもカットできますので。ANo.3は余計なアドバイスだったかも知れません。すみませんでした。

私自身には知識がありませんので、どこか参考になるサイトは無いかと探してみたところ、tks_technology と言うサイトで
  http://tkstechnology.web.fc2.com/index.html
さいとーさんという人がROBO-1出場めざして2足歩行ロボットを作っている製作日記を見つけました。回路図などの詳しい記載はありませんが、製作日記diaryの0601~0602あたりが参考になるかも知れません。

そこには、ジャイロセンサ(ムラタENC-03M)をどう使うかを悩んだあげく、
「どうやら難しく考えすぎていたようだ。
 ただ単に角速度が生じたら逆の角速度を生じさせるだけでよかった。」
とありました。なにか参考になりますでしょうか。

参考URL:http://tkstechnology.web.fc2.com/index.html

ANo.2,3です。
製作お疲れ様です。長文のお礼をありがとうございます。
私もいつか2足歩行ロボットに挑戦したいとは思いつつ、今の私の知識では難しいことが多く、いただいたお礼に応えられそうもありません。

ただ、お礼を読ませていただいてフト思ったことがあります。

私の場合はロボットの進行方向を制御させる上で機体が現在どの方向を向いているかを知る必要があったので、ござは承知で角速度を積分してヨー角を計算させたわけです。

ですが、質問者さんは2足歩行ロボットの姿勢制御用にジャイ...続きを読む

Q3軸加速度センサによる傾き計算

加速度センサを使った傾き(重力方向に対して何度傾いたか?)の求め方を教えてください。

3軸加速度センサがあります。
3軸(=直交座標x、y、z)の値は重力の分力で、3軸合成値の絶対値(√x^2+y^2+z^2)=1です。
つまり、完全に静止状態でしか測定しないものとします。

ある時点(初期値)の加速度センサの値をZa=(x1,y1,z1)とします。
N時間経過後の加速度センサの値をZb=(x2,y2,z2)とします。
この両者の値より、N時間後に重力方向に対して傾いた角度を求めるには、どうすれば良いのでしょうか?
便宜上x、y、zとしましたが、どの軸が重力方向で、どの軸が水平線方向かは不定です。
考え方だけでも良いのでお教え頂けると幸いです。

よろしくお願いします。

Aベストアンサー

 Zaに対してZbが何度傾いてるかを計算したいんですよね。
 内積
  Za ・ Zb = x1x2 + y1y2 + z1z2
を使うと、Za と Zbがなす角度θは
  Za ・ Zb = |Za||Zb|cosθ
と表せます。一方、
  |Z| = √(x^2+y^2+z^2)=1
ということだから
  Za ・ Zb = cosθ
つまり
  θ = Arccos(x1x2 + y1y2 + z1z2)

Qジャイロセンサーの繰り返し誤差の補正について

マイコン初心者です。
SH7144のA/Dコンバーターにジャイロセンサーを接続し、ジャイロの出力を積分して、角度を求めようとしました。下記のコードで、積分値は出せたのですが、ジャイロを一度傾けて元に戻しても初期値に戻らず、オフセットが残ってしまいます。積分前の出力を見ると、CW側にジャイロを回すと、CW側に値が振れた後にCCW側へ少し値が振れているようなので、角速度のデータから来る誤差じゃないかと自分では仮説を立ててみたものの、その補正のところでつまづいてしまいました。
質問はCだけの問題ではないかもしれませんが、組み込みでジャイロセンサーを扱った経験のある方がいましたら、ご教授をお願いいたします。
ジャイロセンサーは村田製作所製圧電振動ジャイロ、ジャイロスターを使用し、カタログに載っているハイパスフィルタとローパスフィルタを通して、SH7144のA/Dコンバーターへ接続しています。
・ジャイロスターのカタログ
ttp://www.murata.co.jp/catalog/s42.pdf
角速度はコンペアマッチタイマを使用し、ノイズ対策のためにCMT0で角速度の平均値を計算しています。CMT0は0.8msecごとにで割り込みが発生するように設定し、main()ではタイマのカウンタを開始するコードのみを書いています。下記にCMT0割り込みのコードを示します。
void int_cmi0(void)
{
unsigned static int t_ave = 0;
static short int adc0_buffer[3] = {0, 0, 0};
unsigned short int i;

unsigned static short int count0 = 1;

adc0_buffer[0] = adc0_buffer[0] + AD0.ADDR0.BYTE;
adc0_buffer[1] = adc0_buffer[1] + AD0.ADDR1.BYTE;
adc0_buffer[2] = adc0_buffer[2] + AD0.ADDR2.BYTE;

t_ave++;
if( t_ave > 100) //AD0のADDR0~2の100回平均を求めています
{

for(i = 0; i < 3; i ++)
{
data_adc0[i] = (adc0_buffer[i] / t_ave) - 109; //"109"は静止時の出力電圧を示しています

if(-3 <= data_adc0[i] && data_adc0[i] <= 3) //平均しても振れてしまう値の分をカットしています
{
data_adc0[i] = 0;
}

adc0_buffer[i] = 0;

if(count0 > 89) //電源投入時にdata_adc0[]の値が安定しないため、最初の10個のデータを捨てています。
{
count0 = 100;
}
else
{
count0++;
data_adc0[i] = 0;
}
}
t_ave = 0;
}
CMT0.CMCSR.BIT.CMF = 0;//コンペアマッチフラグをクリア

}
角度は、CMT1を使用し、8msecの間隔で割り込みを発生させ計算しています。最終的な計算結果は、SH7144のSCIを使用して、PCのハイパーターミナルに表示しています。
void int_cmi1(void)
{
static short int adc0_buffer_s[3] = {0, 0, 0}; //角速度の初期値を入れるバッファです
 unsigned static short int count1 = 1;
 short int i;

for(i = 0; i < 3; i ++)
{
data_adc0i[i] =data_adc0i[i] + ((adc0_buffer_s[i] + data_adc0[i]) / 2); //積分を行う部分です。最終的に制御用のゲインにしようと考えているので、時間項8msecは明記していないです。
adc0_buffer_s[i] = data_adc0[i];

if(count1 > 89) //角速度と同様最初の10個のデータは0にしています
{
count1 = 100;
}
else
{
count1++;
data_adc0i[i] = 0;
}
}
CMT1.CMCSR.BIT.CMF = 0;//コンペアマッチフラグをクリア

}
main()では、各機能のイニシャライズと各CMTのカウンタ動作を開始するコードのみを書いています。ハイパーターミナルで動作が見れているので、各機能は動作していると思います。
void main(void)
{
initIO(); //各機能のイニシャライズです。
initINT();
initSCI();
initADC();
initCMT();
CMT.CMSTR.BIT.STR0 = 1;//CMT0カウント開始
CMT.CMSTR.BIT.STR1 = 1;//CMT1カウント開始
while(1);
}

マイコン初心者です。
SH7144のA/Dコンバーターにジャイロセンサーを接続し、ジャイロの出力を積分して、角度を求めようとしました。下記のコードで、積分値は出せたのですが、ジャイロを一度傾けて元に戻しても初期値に戻らず、オフセットが残ってしまいます。積分前の出力を見ると、CW側にジャイロを回すと、CW側に値が振れた後にCCW側へ少し値が振れているようなので、角速度のデータから来る誤差じゃないかと自分では仮説を立ててみたものの、その補正のところでつまづいてしまいました。
質問はCだけの問題...続きを読む

Aベストアンサー

ANo.1~3=Interestです。
ちょっと考えてみたのですが、手順を踏んで問題を切り分けて考えたほうがいいかなぁと。

(1) サーボモータを動かさない状態でジャイロの出力から正しく姿勢が求まることを確認する。
(2) 回路的にノイズを抑制できないのであれば、(1)にノイズ除去/平滑化の仕組みを盛り込む。

> ノイズの周波数の件ですが、手元にスペアナがない+本格的な周波数解析も初めてなので、
> これもまた自信がないのですが、サンプリング周波数1.25kHz(0.8msec)でSH2のA/Dを使って
> サンプリングしてscilabで、離散フーリエをかけてみました。

がんばりましたね~。うちのデジタルオシロにはFFTが付いているのでそんなものすぐに測れるだろうと思っていましたが、無ければ無いなりに工夫しましたね。驚きました。scilabというのも初めて知りました。

さて、±15mVのノイズですが、ムラタのジャイロスターの感度が0.67mV/deg/sec ということからすると、5deg/secぐらい狂ってしまう大きなノイズなのですね。ふと私の手持ちのジャイロの感度がどれくらいか調べてみたところ、
 IDG-300の場合、   2.0 mV/deg/sec
 HS-EG3(司21)の場合、25.0 mV/deg/sec
と、ジャイロスターと比較するとノイズに対してかなり寛容だということがわかりました。(反面、ダイナミックレンジが狭いのですが。)結構違うんですね。

参考
http://strawberry-linux.com/catalog/items?code=18026
http://www.mecharoboshop.com/Products/STLJapan/tukasa21

ANo.1~3=Interestです。
ちょっと考えてみたのですが、手順を踏んで問題を切り分けて考えたほうがいいかなぁと。

(1) サーボモータを動かさない状態でジャイロの出力から正しく姿勢が求まることを確認する。
(2) 回路的にノイズを抑制できないのであれば、(1)にノイズ除去/平滑化の仕組みを盛り込む。

> ノイズの周波数の件ですが、手元にスペアナがない+本格的な周波数解析も初めてなので、
> これもまた自信がないのですが、サンプリング周波数1.25kHz(0.8msec)でSH2のA/Dを使って
> サンプリングし...続きを読む

QEXCELにてローパスフィルタを作成する

実験の測定データをEXCELでデータ整理しようと考えております。データ整理のためローパスフィルタをかけたいのですが、具体的にどういった式、もしくはEXCELの機能を使用したらいいのでしょうか?デジタルフィルタが良く分からないのでよろしくお願いします。
ちなみにローパスフィルタは1000Hzをかけたいです。

Aベストアンサー

時系列データの処理ならば

OutputData(n+1) = OutputData(n) + (InputData(n+1) - OutputData(n)) * dt / T

dt:データのサンプリング間隔
T:フィルタの時定数 1/2πf
f:カットオフ周波数
n,n+1:それぞれn個目,n+1個目のデータをしめす。

でいけると思いますが、一次のパッシブなんで効果が薄いかも。(普通はベッセルかけるんでしょうけど、そこまではわからない)

Qタンジェントとアークタンジェントの違い

タンジェントとアークタンジェント、サインとアークサイン、コサインとアークコサインの違いをすごく簡単に教えてください。

Aベストアンサー

タンジェントやサイン、コサインは、角度に対する関数です。
例えば
 tan60°=√3
のような感じで、角度を入力すると、値が出てきます。

逆に、アークタンジェントなどは、数値に対する関数です。
 arctan√3=60°
などのように、数値を入力すると角度が出てきます。

そして、タンジェントとアークタンジェントの関係は、
springsideさんも書いてありますが、逆関数という関係です。
逆関数というのは、原因と結果が逆になるような関数です。
例えば、
  45°→タンジェント→1
  1  →アークタンジェント→45°
のように、「1」と「45°」が逆の位置にありますよね?
こういう関係を、「逆関数」というんです。

どうでしょう、わかりましたか?

Q実行途中でのエラー発生について

こんばんは。
この掲示板を頻繁に利用させていただいている者です。

Visual C++.NET 2003を利用しソケットプログラミングをしていたところ、突然わけの分からないエラーが途中で発生してしまいます。

[エラー内容]
Debug Assertion Failed!
File: fprintf.c
Line:56

Expression: str != NULL

For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
上記のようなエラー内容です。

今まで実行可能であったのに、突然エラーメッセージが発生しました。
Line:56ということから56行目を見たところ、str != NULLという記述もしていませんし、かつその行はコメントを記述しています。

なにか原因があるのでしょうか?

よろしくお願いします。

こんばんは。
この掲示板を頻繁に利用させていただいている者です。

Visual C++.NET 2003を利用しソケットプログラミングをしていたところ、突然わけの分からないエラーが途中で発生してしまいます。

[エラー内容]
Debug Assertion Failed!
File: fprintf.c
Line:56

Expression: str != NULL

For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
上記のようなエラー内容です。

今ま...続きを読む

Aベストアンサー

> File: fprintf.c
> Line:56

これは、fprintf関数のソースの56行目です。
質問者さんのプログラムで、fprintf関数を呼び出ししている箇所があると思います。

VCは現在手元にありませんが、[表示]メニューから「コールスタック」ウィンドウを表示すると、どういう関数が順番に呼ばれてfprintfのところにたどり着いたかをあらわすコールスタックが表示されます。
呼び出し先(上)から遡って、自身の作成したモジュールの所での引数を確認してみてください。

QLNK2019: 未解決の外部シンボルのエラーが出る

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}


 mymain.h
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();


 myhelper.h(サンプルなので打ちミスはない)
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;
----------------------------------------------------------------
 エラー内容
1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です
1>my - エラー 2、警告 0
ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ
----------------------------------------------------------------
画像を貼り付けときます
(見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html)
初心者なのでわかりやすくお願いします

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自...続きを読む

Aベストアンサー

ファイル構成から推測するに
mymain.cpp というファイルに
void MyMain(void) {
// ここに処理を書く
}
という関数が必要なようです。

Qホワイトノイズはガウス分布?

ホワイトノイズはガウス分布に従うというようなことがいろいろな文献に書かれているのですが、
これってどういうことなのでしょうか?
ホワイトノイズとは全周波数に渡って一様なノイズのはずです。
このノイズが平均値とか分散値をもつというのはどういうことなのでしょうか?

Aベストアンサー

#1です。
A#1の補足の質問の回答

> これはσ→∞のとき完全なホワイトノイズになると考えて良いのでしょうか?
もちろん一致します。でもσが無限大のガウスノイズは、現実には実現不可能です。

> この標準偏差が無限のときに、
狭い周波数帯では平坦に見えるということからホワイトノイズと呼ばれるという説明で合っていますでしょうか?
無限は思考的な理論の世界の表現で、現実には無限の周波数は作れませんし、その測定器も存在しません。もしσが無限大のガウス雑音が出来たとしたら、ホワイトノイズと区別できないでしょう(ガウスノイズはσ無限大の極限ではホワイトノイズは一致します)。

別に標準偏差が無限大でなくても、扱うスペクトルの周波数帯で平坦なスペクトル(と見えている)ならホワイトノイズとして扱って良い(見做して良い)でしょう。あくまでも擬似的なホワイトノイズであって、ホワイトノイズそのものではありません。
たとえば、音声などの可聴周波数帯(50Hz~20kHz位)の信号を扱う場合は標準偏差σが100kHz以上のガウス雑音を擬似的なホワイトノイズとして扱って良いでしょう。このσのガウス雑音のスペクトルの大きさ(振幅)は可聴周波数帯のf=0~20KHzの範囲ではほとんど平坦なので、σ=100kHzのガウス分布のガウス雑音は可聴周波数帯ではホワイトノイズの代用として使えるでしょう(この意味で擬似ホワイトノイズです)。同じホワイトノイズ発生器を、帯域100kHzの周波数計測器の雑音源としては全くホワイトノイズの役目をしません。あくまでガウスノイズに過ぎません。

フーリエ積分(変換)を学んで見えるなら、
振幅分布がガウス分布の信号(雑音)の周波数スペクトル(密度)はやはりガウス分布になります。

一方、振幅が無限大、幅ゼロのパルス(ディラックのデルタ関数δ(t))の)のフーリエ変換はフラットなスペクトルになります。しかし、現実には、振幅が無限大、幅ゼロのパルスは作れません。
デルタ関数と見做せる大きな振幅と幅の狭いパルスは作れます。これらのパルスを時間間隔を蜜に発生させた信号源(雑音源)が擬似的なホワイトノイズ発生器ということですね。

なお、真の意味のホワイトノイズ発生器は製作不能です。製作できてもそれがホワイトノイズ発生器であることを確認する測定器も作れないし存在しませんね。あくまで理念的な空想の産物ですね。

#1です。
A#1の補足の質問の回答

> これはσ→∞のとき完全なホワイトノイズになると考えて良いのでしょうか?
もちろん一致します。でもσが無限大のガウスノイズは、現実には実現不可能です。

> この標準偏差が無限のときに、
狭い周波数帯では平坦に見えるということからホワイトノイズと呼ばれるという説明で合っていますでしょうか?
無限は思考的な理論の世界の表現で、現実には無限の周波数は作れませんし、その測定器も存在しません。もしσが無限大のガウス雑音が出来たとしたら、ホワイトノイズと...続きを読む

Q一次遅れ系の制御における時定数Tの求め方

計量士の資格を勉強していると自動制御の問題が出てきました。

単位ステップ応答は1-exp(t/T)である。
一次遅れ系の時定数Tの求め方として2つの方法がある。
一つは、1-exp(-t/T)が63.2%になったとき。
もう一つは、過渡応答曲線の原点での接線が定常値に交わるまでの原点からの時間を求める。
とあります。
ここで質問なのですが、この過渡応答曲線とは、1-exp(-t/T)の曲線のことでしょうか?

また単位インパルス応答はexp(-t/T)です。
これが36.8%になったとき時定数Tを求められることは知っているのですが、
同様に、過渡応答曲線の原点での接線が定常値に交わるまでの
原点からの時間を求めると時定数Tを求められるのでしょうか?

Aベストアンサー

>この過渡応答曲線とは、1-exp(-t/T)の曲線のことでしょうか?
そうです。
t=Tとおくと、このときの振幅v(T)=1-exp(-T/T)=1-exp(-1)≒0.6321
と定常値の振幅1に対して0.6321は63.21%にあたります。

>原点からの時間を求めると時定数Tを求められるのでしょうか?
求められます。

過渡応答曲線v(t)=exp(-t/T)に対して、t=0における接線は
u(t)=1-(t/T)ですので、u(t)=0(定常値)になる時間は
1-(t/T)=0からt=T(時定数)が求められます。
このときの振幅はv(T)=exp(-T/T)=exp(-1)≒0.3679
これは定常値(0)までの振幅1に対して36.79%にあたります。


人気Q&Aランキング