ある回路の出力y(t)は,回路のインパルス応答がf(t)のとき,入力x(t)との畳み込みによって
y(t)=f(t)*x(t)=∫(-∞,∞)f(τ)(t-τ)dτ
です.(*は畳み込み演算)

さて,出力と応答特性から入力を求める場合は,どうするのでしょう?時系列データが等時間間隔でないため,fftが使えないので困っています.

このQ&Aに関連する最新のQ&A

A 回答 (6件)

書き方にちょっと誤解があったかもしれませんので。


>やはりFFTが正統なのでしょうね
ガウス-ザイデルの方法は、FFTは使いません。
直接デコンボリューション(内部ではコンボリューションもしている)を行う手法です。

> #3にも書きましたとおり,補完してFFTでやってみました.
> 今のところ,期待した結果とはなっておりません.
単純にFFTして、わり算して求めても、測定値が実測の場合はノイズの影響でうまく復元しないでしょう。

実測データに対してやらなければならない手順は、

1.データ補間
 No.5の方の言われる窓関数を使った方法はかなり有効です。
 詳しくはNumerical Recipes in C などの本を参照して下さい。

2.ノイズフィルタで可能な限りノイズの除去
 窓関数を使う方法をとれば、同時にフィルタの役目もしますので、これは必要なくなります。
 保管方法によってはこれがないとまともな結果が得られません。

3.デコンボリューション
 もっとも数学的にわかりやすいのはガウスザイデルの方法(ガウスの消去法で連立方程式を解く)ですね。
 これ以外にも沢山の方法が考案されています。

h(t)が推定とのことですが、それだけではそれらしい結果が得られない理由にはなりません。
うまくデコンボリューション出来ない理由の大半はノイズによる影響です。
このデコンボリューションというのはかなり難しく、色々なやり方が研究されています。
デコンボリューション(deconvolution)、ガウス、ウィナーフィルタなどでwebを検索すると色々出てくると思いますよ。

では、がんばって下さい。
    • good
    • 0

yの帯域に上限があることがはっきりしている場合には


直線補間より高度な
sin(x)/xを使う方法があります
これだと無限個のサンプリング値を必要とするので
窓関数w(x)をかけて
w(x)・sin(x)/x
を補間に使うと良いでしょう
するとサンプリング値を補間点近辺に限定できます
サンプリング間隔が大きいと単なる直線補間は余りにも荒すぎます
    • good
    • 0

>逆畳み込み積分は応答関数の複素共役と畳み込み積分をするということで良いのでしょうか?


どのようにイメージされているかが、今一つ理解できませんでしたが、

y(t) = f(t) * x(t)

の操作をしてy(t)を得ているという点はよろしいわけですね。
原理的には、No.1の方が書いたように、フーリエ変換で表すと、x(t)をy(t)とx(t)から逆算出来ることになります。
(これが最も簡単で早い解法です)

が、もし実測波形の場合は、
y(t) = f(t)*x(t) + n(t)
とノイズの項n(t)が入ってしまうために、最もx(t)に近い波形を推定しなければ求めることが出来ません。
ノイズn(t)も実測できれば良いのでしょうけど、事実上無理ですよね?
また、わずかなノイズでもx(t)に大きく影響してしまうためにうまく復元できません。

なお、どの手法を選ぶにしてもデータは等間隔でないと、扱いがとても面倒(私にはその扱い方は理解できませんでした)なので、普通は補間などの方法で、等間隔にマッピングし直して処理します。

>単に相関を取ったのではなぜだめなのでしょうか?
デコンボリューションは、応答関数f(t)によってゆがめられた信号から、元の波形を推定することになりますので、相関(コリレーションの意味ですか?)では解けないと思いますが。
それとも相関という意味を、最小2乗法でfittingするようなイメージで使われていますか?
ならば、ガウス-ザイデル法がそれに該当します。
y1(t) = f(t) * x1(t)
x1(t)を初期値として、y(t)-y1(t)の残差から、次のx2(t)を推定して、また残差をみて、、、と繰り返して、残差が小さくなるようなxn(t)を求めることで、元波形を推定します。

では。
    • good
    • 0
この回答へのお礼

またまた回答ありがとうございました.経過報告です.

本屋にて信号処理関係を漁りましたが,直接デコンボルーションをする方法については全く見つかりませんでした.やはりFFTが正統なのでしょうね.

#3にも書きましたとおり,補完してFFTでやってみました.
今のところ,期待した結果とはなっておりません.

元データが2万5000点を,補完して2万点にしてしまったので,この時点でおかしいかも知れません.もう少しやってみます.

又,f(t)またはf(ω)が正確に判っているわけでは無く,判っているのは時定数だけなのです.mHz程度の応答であるため,手持ちの測定器では調べることもままならずというところです.

このセンサ自体にヒステリシスも含まれているようなので,計測方法自体も見直すことにします.

お礼日時:2002/02/19 22:30

出力信号を直線補間をして等間隔にあるデータを求めfftを行えばいいと思います


もし精度を上げたかったら高次補間をすればいいと思います
xが未知なのだからfは予測値で我慢するしかありません
    • good
    • 0
この回答へのお礼

補完処理->FFTしてみました.
f(t)は一次遅延で時定数のみが判っており,そのまま計算したのでは期待した結果は得られませんでした.

きっと周波数特性が一致していないのだと思います.他にもヒステリシスが含まれていそうで,これらを元信号からできる限り除去しないと,信号処理だけでは厳しいようでした.

助言ありがとうございました.

お礼日時:2002/02/19 22:13

その操作は、一般に「逆畳み込み積分」または「デコンボリューション」と呼ばれます。


やり方は実に様々あるので、お探しになってみて下さい。一番簡単なのはガウス-ザイデルの方法です。
(連立一次方程式を解く形となります)

データが等時間間隔でない場合は、扱いが大変面倒なので、一度等時間間隔の空間へ補間などを用いてマッピングし直してから計算すると良いでしょう。

観測波形にノイズなどがあると、強調されてしまいますので、事前にフィルタリングが必要になったりします。
(単純なFFTによる復元では、このノイズのために実用にはなりません。)

では。
    • good
    • 0
この回答へのお礼

回答ありがとうございます.
まだよく判っていないのですが,逆畳み込み積分は応答関数の複素共役と畳み込み積分をするということで良いのでしょうか?

単に相関を取ったのではなぜだめなのでしょうか?

お礼日時:2002/02/19 14:48

Y(ω)=∫dt・exp(-i・ω・t)・y(t)


X(ω)=∫dt・exp(-i・ω・t)・x(t)
F(ω)=∫dt・exp(-i・ω・t)・f(t)
とする
Y(ω)=F(ω)・X(ω)
であるから
X(ω)=Y(ω)/F(ω)
である
これより
x(t)=1/(2・π)・∫dω・exp(i・ω・t)・X(ω)
=1/(2・π)・∫dω・exp(i・ω・t)・Y(ω)/F(ω)
もしy(t)が
y(t)=Σ(n)・x[n]・δ(t-t[n])
と表されるならば
Y(ω)=Σ(n)・x[n]・exp(-i・ω・t[n])
である
ただしiは虚数単位である(jにしたほうがいいと思いますが)

x(t),y(t),f(t)のうち何が時系列データになるのですか?
adc、dacがどこかには行っているのでしょうか?
もっと詳しい構成を教えてください
    • good
    • 0
この回答へのお礼

回答ありがとうございます.
得られているのはtとy(t)だけで,f(t)というのは部品カタログからの予測値です.
y(t)の測定が等時間間隔で無い(ある条件から外れたときはデータを取り込まないようになっているため),fftは使えないのです.
tが判っているので,フーリエ積分をコツコツやればいいのかと思ったのですが,やはり等時間間隔で無いでない為,積分値に誤差が生じてしまいそうです.
そのためフーリエ積分を用いないでやればいいのかと思ったのでした.

お礼日時:2002/02/19 13:42

このQ&Aに関連する人気のQ&A

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

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

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

Qシート上のコンボボックスの使い方

シート上のコンボボックスの使い方

現在作っている物があるのですが、色々と調べてはみるものの解決出来なくて困っています。
☆やりたいこと

シート1 コンボボックスA コンボボックスB コンボボックスC 一覧表(A1~A16)の枠だけが書かれているもの
コンボボックスA・・・青森 秋田 岩手
コンボボックスB・・・100 200 300
コンボボックスC・・・北 東 西 南

シート2 コンボボックスAとBとCの選択されたものによって選ばれる一覧表(例A1~E16)のデータ

☆シート1にてコンボボックスを3種類選択した時に、シート1枠だけの一覧表にシート2のデータが表示される!
ということがやりたいです。

説明がアバウトすぎて申し訳ありませんが、初心者なりに色々やった結果が惨敗に終わっている状態です。

皆様のお力を貸していただきたく思います。

Aベストアンサー

>説明がアバウトすぎて申し訳ありません

そうですね。
・ご利用のエクセルのバージョンも不明
・使いたい「コンボボックス」の種類も不明
・一番肝心の,ABCが選ばれたときにシート2のどれを取ってきたら良いのか,対応の詳細も不明
・何を「色々やった」けど失敗したのかも一切不明

という訳で。私の好きなように説明しますので,その通りに作成してください。

シート2の
A1:A12をセル結合して青森と記入
A13:A24をセル結合して秋田と記入
A25:A36をセル結合して岩手と記入
B1:B4,B5:B8,B9:B12をセル結合して100,200,300を記入
B1:B12をコピーしてB13からB36に貼り付け
C1,C2,C3,C4に東西南北を記入
C1:C4をコピーしてC5からC36に貼り付け
これで,コンボボックスのABCでどれを選んだら,どのデータが該当するか判りますね。
D1からS36に,該当のデータをそれぞれ記入してください。

勿論,最後まで手順を進めてやり方を理解したら,縦横を入れ替えてご自分で作成し直しても全然構いません。


シート1の
A1からA16に枠がある。
C1セルに入力規則を取り付け(2003までのエクセルではデータメニュー)
 種類 リスト
 元の値 青森,秋田,岩手  と,半角のカンマでつないで記入
D1セルに入力規則を取り付け
 種類 リスト
 元の値 100,200,300  と,半角のカンマでつないで記入
E1セルに入力規則を取り付け
 種類 リスト
 元の値 東,西,南,北  と半角のカンマでつないで記入

A1に
=IF(COUNTA($C$1:$E$1)<3,"",INDEX(Sheet2!$D$1:$S$36,MATCH($C$1,Sheet2!A:A,0)+MATCH($D$1,Sheet2!$B:$B,0)+MATCH($E$1,Sheet2!$C:$C,0)-2,ROW(A1)))
と記入して,A16までコピーしておく。

>説明がアバウトすぎて申し訳ありません

そうですね。
・ご利用のエクセルのバージョンも不明
・使いたい「コンボボックス」の種類も不明
・一番肝心の,ABCが選ばれたときにシート2のどれを取ってきたら良いのか,対応の詳細も不明
・何を「色々やった」けど失敗したのかも一切不明

という訳で。私の好きなように説明しますので,その通りに作成してください。

シート2の
A1:A12をセル結合して青森と記入
A13:A24をセル結合して秋田と記入
A25:A36をセル結合して岩手と記入
B1:...続きを読む

Qインパルス応答は、入力信号をf(t)、出力信号をg(t)、インパルス応

インパルス応答は、入力信号をf(t)、出力信号をg(t)、インパルス応答関数をh(t)とすると、畳み込み積分∫[0→t]f(τ)h(t-τ)dτで表されると思うのですが、この積分に従うとすれば、g(t)やh(t)がどんな関数であってもg(0)=0となると思います。

一方で、g(0)=f(0)h(0)=f(0)なので、f(0)もh(0)もゼロではないとすると、g(0)≠0となるような気がします。

何か勘違いをしていると思うのですが、どこが間違っているのかわからないので、教えて頂けないでしょうか。よろしくお願いします。

Aベストアンサー

>「g(0) = f(0) h(0)」とはならないのでしょうか??(これが聞きたかったことです。。)

なりません。

>仮に入力信号f(t)を、
> f(t)=C(0より大きい定数) (t=0のとき), and 0 (t>0のとき).
>のように考えると、
> g(t)=C h(t)

これは間違い。
g(t)=∫[0→t]f(τ)h(t-τ)dτ
=∫[0→0+] C*h(t-0+)dτ+∫[0+→t] 0*h(t-τ)dτ
=C*h(t)∫[0→0+] dτ + 0
=C*h(t)*0 (∵積分範囲が0)
=0 となります。

∴ g(t)=0

>で、
> g(0)=C h(0)=f(0)h(0)
>となるような気がしています。
と言う式は成り立ちません。

QAccessのコンボボックスの使い方について

初心者です。

コンボボックスの使い方について教えて下さい。
商品テーブルA
商品名|コードA|コードB|コードC|

マスターテーブル
A|B|商品名|コードA|コードB|コードC|D|E

のような2つのテーブルを作成し、マスターテーブルの「商品名」に
コンボボックスで商品テーブルAの商品名を表示させるとします。
そこでコンボボックスで商品名を選択すると同時に
商品テーブルAからほかの「コードA」「コードB」「コードC」の値を
マスターテーブルの「コードA」「コードB」「コードC」に入れる方法は
ありますでしょうか?

また、他の方法はありますでしょうか?
宜しくお願い致します。

Aベストアンサー

         商品テーブルA
商品名|コードA|コードB|コードC|
 ↑_
  |マスターテーブル
A|B|商品名|D|E|    コードA|コードB|コードC|
            コードA~Cは商品テーブルから

このようなクエリを作成すれば
マスターテーブルに、コードA~Cのフィールドを作らなくて済みます。
極力ダブったデータはテーブルに持たないのが基本原則ですがいかがでしょう?
[ACC] データベースの正規化の基礎
http://support.microsoft.com/default.aspx?scid=kb;ja;100139
http://www.mahoutsukaino.com/ac/ac2002/ac2002/hajime/rdb.htm

コンボボックスに関しては
マスターテーブルの商品名のルックアップテーブルの値集合ソースに商品テーブルAを指定し
連結列    1
列数     4
列幅   2cm;2cm;2cm;2cm
とかにすれば一覧が出てきますが、商品数が多くなった場合の事も考えると
テーブルやクエリでの設定ではなく
フォーム上で何がしかの設定を行うようにした方が後々メンテがしやすいように思えます。
この辺は個人的な好みの問題かもしれません・・
あと、主キーとして
商品テーブルA・マスターテーブルとも
商品ID 長整数型・マスターID 長整数型
などというものを設けたほうが良いように思えます。

         商品テーブルA
商品名|コードA|コードB|コードC|
 ↑_
  |マスターテーブル
A|B|商品名|D|E|    コードA|コードB|コードC|
            コードA~Cは商品テーブルから

このようなクエリを作成すれば
マスターテーブルに、コードA~Cのフィールドを作らなくて済みます。
極力ダブったデータはテーブルに持たないのが基本原則ですがいかがでしょう?
[ACC] データベースの正規化の基礎
http://support.microsoft.com/default.aspx?scid=kb;ja;100139
http://www...続きを読む

Q(x,y)平面内の質点に力F(xy,xy^2/2)でかけられているとき質点が(0,r)から(r,0)

(x,y)平面内の質点に力F(xy,xy^2/2)でかけられているとき質点が(0,r)から(r,0)まで半径rの演習を動く時に力のなした仕事を求めよ。
これが分かりません…

Aベストアンサー

たぶん
(x,y)=(r・cosθ,r・sinθ)
と置いてF・dlをθについて π/4から0まで積分すればいいんじゃないのかな。
ちなみに
dl = (r・sinθ,-r・cosθ)dθ
ベクトルの内積はわかるよね?
だったら計算はできるかと。

QExcel VBA コンボボックスの使い方

 VBAでのコンボボックスの使い方をしらべているのですが、うまく見つかりません。コンボボックスのリストに登録するのはどうしたらよいのでしょうか?シート上のセル内のデータを使用しないとリストの登録は出来ないのでしょうか?VBA上で作成して、ユーザーフォームで選択できるようにしたいと思っています。VBAをはじめたばかりなので初歩的な質問で大変恐縮です。どなたかわかる方がいらっしゃったらお願い致します。

Aベストアンサー

http://www.ken3.org/vba/backno/vba084.html

ComboBox.AddItem "あ"

Q入力信号x(t)、出力信号y(t)が画像のような線形時不変システムにお

入力信号x(t)、出力信号y(t)が画像のような線形時不変システムにおいて、
入力信号に振幅1の正弦波sin(t)を入力したときの出力信号の振幅を求めたいんですが、
やり方がいまいちわかりません。
ご教授お願いします。

Aベストアンサー

x(t) = sin(ω*t) なら部分積分法で計算できると思いますが、積分結果は
  ∫[τ=0~∞] sin{ ω*( t - τ ) }*exp(-τ) dτ = { sin(ω*t) - ω*cos(ω*t) }/( 1 + ω^2 ) --- (1)
となります。

これが A*sin( ω*t + φ) という形になるとすれば
   A*sin( ω*t + φ ) = A*sin(ω*t)*cos(φ) + A*cos(ω*t)*sin(φ) --- (2)
なので、(1) と (2) の sin(ω*t) と cos(ω*t) の係数を比較して
  A*cos(φ) = 1/( 1 + ω^2 )
  A*sin(φ) = -ω/( 1 + ω^2 )
から
  A = 1/√( 1 + ω^2 )、φ = -arctan(ω)
となります。

Qキューとコンボボックスの使い方  VB2008

VB2008を使っています。
キューとコンボボックスの使い方がわからないのですが、以下のソースで

(1)キューとデータソースを使う。
Dim queue As Queue = New Queue(20)
For i As Integer = 0 to 9
queue.Enqueue( i.ToString() )
Next i
ComboBox1.DataSource = queue.ToArray
ComboBox2.DataSource = queue.ToArray


(2)べたな方法
ComboBox1.Items.Clear()
For i As Integer = 0 to 9
ComboBox1.Items.Add( i.ToString() )
Next i

ComboBox2.Items.Clear()
For i As Integer = 0 to 9
ComboBox2.Items.Add( i.ToString() )
Next i

------------------------

(1) (1)と(2)は厳密にどのように違うのでしょうか?
(2) (1)で心配なのは、キューの上限を20にしていて、実際使っているのは10個で後は空です。
この状態で、コンボボックスのDataSourceにセットした場合、(2)と同じように10件だけになっているのでしょうか?
(3) (1)は同じキューを使いまわしています。コンボボックス1と2は独立して使えるのでしょうか?(データは同じです。)

VB2008を使っています。
キューとコンボボックスの使い方がわからないのですが、以下のソースで

(1)キューとデータソースを使う。
Dim queue As Queue = New Queue(20)
For i As Integer = 0 to 9
queue.Enqueue( i.ToString() )
Next i
ComboBox1.DataSource = queue.ToArray
ComboBox2.DataSource = queue.ToArray


(2)べたな方法
ComboBox1.Items.Clear()
For i As Integer = 0 to 9
ComboBox1.Items.Add( i.ToString() )
Next i

ComboBox2.Items.Clear()
For i As Integer = 0 ...続きを読む

Aベストアンサー

順序が前後しますが、

(2)について
Queueコレクションのインスタンス生成時にキャパシティを指定しても、実際に配列で返されるのはコレクションに格納したオブジェクトの数だけです。
queue.ToArray.Length とすれば、10が返されます。

(3)について
今回は文字列型(値型)なので、それぞれの値は独立しています。これがクラス(参照型)になると若干話が変わってきます。

(1)について
上記を含め今回の場合、最終的に結果は同じになると思います。
「厳密に」となると、あらかじめリストを生成してからコンボボックスに放り込むか、コンボボックスでリストを形成するか、という違いがあります。分量が多くなってくると、処理の時間にも違いが出てくるでしょう。

Q畳み込み積分とインパルス応答

畳み込み積分とインパルス応答

畳み込み積分 「∫ f(t-τ) g(τ) dτ」において、
g(τ)=dx(τ)/dτ はインパルス応答である・・・という部分が分かりません。
x(τ)はステップ応答ですよね?
(入力前の信号に視点を戻して)τ範囲を縮めていくと、ステップ信号→インパルス信号の様になりそうですが、

インパルス信号→τ=0において∞の値をとり、∞(値)×1/∞(幅)=1
ステップ信号 →τが0以上の範囲において、常に1という値をキープ
        →τの幅をいくら縮めても、値は1であり、インパルスの様に∞にはならない

であるので、ステップの幅を縮めても、インパルスにはならない様に思うんです。

Aベストアンサー

g(τ)=dx(τ)/dτ
右辺は、x(τ)をτで微分、という意味ですね。
ステップ応答を微分すると、τ=0以外の点では、x(τ)は一定値ですから、微分すると0です。
τ=0のところで不連続なんで、微分すると∞になりますが、
(厳密な議論を省略して感覚的な話をすれば)
不連続なジャンプの高さが1なので、∞(値)×1/∞(幅)=1になるような∞になります。

QACCESS2007 コンボボックス使い方

 いつも皆様には、お世話になります。以下のようにコンボボックスを用いて絞り込みシステムを考えております。しかし、汎用例が乏しくまた、私自身初心者なので、どこをどうすればよいか分からず作業がストップしています。
-------------------------------------------------
| 絞り込みシステム
|------------------------------------------------
| 勘定項目:[コンボボックスA〕 ←3項目表示    A、B、Cなど
| 勘定科目コード:〔コンボボックスB〕←2項目表示 10,20 など
| 分類項目:〔コンボボックスC〕←12項目      赤、青、黄,緑など
| 分類コード:〔コンボボックスC〕←上記の項目、コードにより 50~1までデータ数がある。

|                            [絞り込みボタン〕
-------------------------------------------------
段階をおって絞り込まれた、これらのフォームから該当するデータを表示させます。

このようなことは可能でしょうか。皆様のお知恵をお借りしたいと思います。何卒よろしくお願いいたします。

 いつも皆様には、お世話になります。以下のようにコンボボックスを用いて絞り込みシステムを考えております。しかし、汎用例が乏しくまた、私自身初心者なので、どこをどうすればよいか分からず作業がストップしています。
-------------------------------------------------
| 絞り込みシステム
|------------------------------------------------
| 勘定項目:[コンボボックスA〕 ←3項目表示    A、B、Cなど
| 勘定科目コード:〔コンボボックスB〕←2項目表示 10,20 など
| 分類項目:〔コン...続きを読む

Aベストアンサー

コンボボックスの絞込み
http://hamachan.info/access/sibori.html

コンボボックス作成の応用講座-1
http://www.accessclub.jp/samplefile/samplefile_192.htm

Q下図において回路のアドミタンスY1Y2Y3を求める詳しい途中式を教えて

下図において回路のアドミタンスY1Y2Y3を求める詳しい途中式を教えてください。また、V=100Vを加えたときに流れる電流I1I2I3を教えてください。
よろしくお願いします。

Aベストアンサー

こんにちは。

R1,R2は抵抗、X2はリアクタンスです。
よって、それぞれのアドミタンスは、1/R1 , 1/R2 , 1/(jX2) となります。
(jは虚数です。)
電流を求めるには、アドミタンスを Y とすると I=Y×V で求まります。
よって、I1 は I1=1/R1×V = 100/25 = 4 [A] となります。
I2 を求めるには、まず R2 と X2 の合成アドミタンスを求めます。
合成インピーダンスは、 1/(R2 + jX2) となります。
よって、I2 = 100/(4 + j3) となります。
I についてですが、I=I1+I2 となります。
交流回路の計算については、以下のURLを参考にするとよいでしょう。

http://kairo-nyumon.com/electric_basic2.html

ちなみに、インダクタ L のリアクタンスは X は、ωL です。


人気Q&Aランキング

おすすめ情報