合計 昨日 今日

C言語で信号処理―――畳み込み積分の性質

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: 黄葉の季節
[URL]
Date: 2017年10月11日(水) 07:41
No: 1
(OFFLINE)

 C言語で信号処理―――畳み込み積分の性質

こんにちは

C言語で基本な信号処理計算をやろうとしています処理―――畳み込み積分の性質に戸惑っています。
算式は以下のとおりです。
y(t) = (s(t)*g(t))×w(t) // 「*」 : 畳み込み積分(convolution); 「×」 : 普通の掛け算

さて、上式と等価的な関係を持つ式はどれでしょうか:
y(t) = s(t)*(g(t)×w(t))
y(t) = s(t)×(g(t)*w(t))
y(t) = (s(t)*w(t))×g(t)

Name: Math
[URL]
Date: 2017年10月11日(水) 10:17
No: 2
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

私は電気工学でヘヴィサイドの演算子法
https://ja.wikipedia.org/wiki/%E6%BC%94 ... 0%E6%B3%95

ミクシンスキーの演算子法https://ja.wikipedia.org/wiki/%E3%83%9F%E3%82%AF%E3%82%B7%E3%83%B3%E3%82%B9%E3%82%AD%E3%83%BC%E3%81%AE%E6%BC%94%E7%AE%97%E5%AD%90%E6%B3%95
で勉強しました。

>さて、上式と等価的な関係を持つ式はどれでしょうか:
>y(t) = s(t)*(g(t)×w(t))
>y(t) = s(t)×(g(t)*w(t))
>y(t) = (s(t)*w(t))×g(t)
等価的な関係を持つ式はないですね。

Name: Math
[URL]
Date: 2017年10月11日(水) 12:34
No: 3
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

[雑談]一般にはフーリエ変換を使って畳み込み演算を単純な掛け算に変換することが出来る。離散系での関数の場合、定義通りの畳み込み計算をしないで、関数 f, g の高速フーリエ変換 (FFT) を掛け算した結果を逆高速フーリエ変換 (IFFT) をすることで、高速に畳み込みの計算処理をするのが一般的である。(FFTプログラムは沢山サンプルがあると思います。)
https://ja.wikipedia.org/wiki/%E7%95%B3%E3%81%BF%E8%BE%BC%E3%81%BF

Name: 黄葉の季節
[URL]
Date: 2017年10月11日(水) 16:20
No: 4
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

Math さん
さっそくお返答ありがとうございます。

私にとってここにMathさんの存在は非常貴重です。
まさに”Math”ですね!かっこういい名前です。

ただ、いただいたリンクを見ましたが、どうやって数学の演算子法/作用素法を用いて、
下記の四つの式の間等価または非等価を判断できるのでしょうか。
y(t) = (s(t)*(g(t))×w(t)
y(t) = s(t)*(g(t)×w(t))
y(t) = s(t)×(g(t)*w(t))
y(t) = (s(t)*w(t))×g(t)


ラプラス変換やFFTに関して基本知識を持っていますが、
石頭せいか、それを駆使して、上記四つの式の間の等価性または非等価性の判定には困っています。

どうぞ宜しくお願いします。

Name: Math
[URL]
Date: 2017年10月11日(水) 19:29
No: 5
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

[雑談]私はファイナンシャル・エンジニアリングの仕事で確率偏微分方程式をC++で解く仕事をしていました。そこでルベーグ積分をやっている先輩がいました。測度の概念はご存知ですか。[雑談]
ラプラス変換は本質的にはフーリエ変換と同等のものですが複素領域sで考察するため広義の取り扱いが可能ですね。”畳み込み”はs空間では単なる積になります。(フーリエ変換も同様)
このことは電気回路の解析ではしばしば使用されるので当たり前のこととして(細かいところは説明が難しい)理解しています。
どの様なシチュエーションで使われるのですか?(ラプラス変換が分かっていれば理解できるはずとおもいますが)

>ただ、いただいたリンクを見ましたが、どうやって数学の演算子法/作用素法を用いて、
>下記の四つの式の間等価または非等価を判断できるのでしょうか。
>y(t) = (s(t)*(g(t))×w(t)
>y(t) = s(t)*(g(t)×w(t))
>y(t) = s(t)×(g(t)*w(t))
>y(t) = (s(t)*w(t))×g(t)
この表記法自体 演算子法/作用素法とは関係なく ”畳み込み積分”を表記するには不十分と思うので具体的にプログラムを提示してください。(普通に考えたらこの表記でんもおかしいですね。)

Name: Math
[URL]
Date: 2017年10月11日(水) 22:04
No: 6
(OFFLINE)

Name: 黄葉の季節
[URL]
Date: 2017年10月12日(木) 00:58
No: 7
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

Mathさん

お返答ありがとうございます。
概念的に理解してから、初めてプログラムを設計したいので、プログラムがまだ出来ていません。

C言語でコーディング自身が私にとって簡単で、
出来てもコードをMathさんにデバグやレビーしていただく必要ありません。

問題はその前にいろいろ処理公式の等価関係を整理したいけれども、
私が提示している四つの式が「互いに等価関係ない」という判断の根拠や方法を
明瞭に教えていただければ幸甚に存じます。

FFT や Laplace変換, z-変換などの実装は私にとって問題ではありません。
知りたいのは私が提示している四つの式の間の等価かどうかの判定方法です。

またどうぞ宜しくお願いします。

Name: Math
[URL]
Date: 2017年10月12日(木) 07:23
No: 8
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

フォーラムルールhttp://dixq.net/board/board.htmlをよく読んでから投稿すること。
フォーラムルールに従って最低限以下のことを分かり易く書くこと
ーーーーー
[1] 質問文
 [1.1] 自分が今行いたい事は何か
 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
 [1.4] 今何がわからないのか、知りたいのか

[2] 環境  
 [2.1] OS : Windows, Linux等々
 [2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々

[3] その他
 ・どの程度C言語を理解しているか
 ・ライブラリを使っている場合は何を使っているか
ーーーーー
どのようなシチュエーション(何学部の大学生とか、C言語で信号処理とは具体的になにをしたいのかとか詳しく書く事)
自分だけ分かって他人にわからない説明はしないこと。
こちらは推量で好意的に意図を解釈して答えているのであるから無駄な時間がかからないように推敲して書く事。
ーーーーー

概念的に理解してから、初めてプログラムを設計したいので、プログラムがまだ出来ていません。
C言語でコーディング自身が私にとって簡単で、
出来てもコードをMathさんにデバグやレビーしていただく必要ありません。

問題はその前にいろいろ処理公式の等価関係を整理したいけれども、
私が提示している四つの式が「互いに等価関係ない」という判断の根拠や方法を
明瞭に教えていただければ幸甚に存じます。

FFT や Laplace変換, z-変換などの実装は私にとって問題ではありません。
知りたいのは私が提示している四つの式の間の等価かどうかの判定方法です。
ーーーーーー
自分勝手なわけのわからないことを書かない
C言語の質問掲示板に”Mathさんにデバグやレビーしていただく必要ありません。”では答える気がうせる!(^^;
(簡単ならCで書け!)
”知りたいのは私が提示している四つの式の間の等価かどうかの判定方法です。”
こんな書き方(y(t) = (s(t)*g(t))×w(t) // 「*」 : 畳み込み積分(convolution); 「×」 : 普通の掛け算)では正しい返答は不可だし”数学的”問題はそういうフォーラムに聞くこと!(今日は外出するので返事は後日。他の方の答えがあるでしょう。)
(どうも畳み込み積分が分かってない気がする どの程度勉強したのか書く事。(s(t)*g(t))を具体的にコンボリュウションの形に書くこと。そうでないと以後の式の解釈が当てずっぽうにならざるをえない。まあプログラム以前の問題ならここでは的外れでしょう。)

Name: 黄葉の季節
[URL]
Date: 2017年10月12日(木) 11:28
No: 9
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

Mathさま

私はMathさまの「等価的な関係を持つ式はないですね。」という結論の根拠やその結論が導かれた方法を
簡単明瞭に教えていただければと繰り返しお願いしたに対して、
貴方は百行以上の文字も費やされても、私の願う事項に一切教えてくれない事に不思議に思います。

それほど直接関係ない文章を書けるなら、
「等価的な関係を持つ式はないですね。」という結論の根拠やその結論が導かれた方法をご紹介いただくには
十分な時間があるでしょう?

お礼を再度申し上げますとともに、
ご教授のほど宜しくお願い致します。

Name: usao
[URL]
ハッカー(140,412 ポイント)
Date: 2017年10月12日(木) 13:09
No: 10
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

Offtopic :
数学全然できない人が,なんとなくふわっとした雰囲気を思ったことを書くので,本気で取り合わないで頂きたいですが…

とりあえず 畳み込み の積分について
これを離散的に,あるいは区分求積的に(?),「総和」な感じに捉えて考えると,
畳み込みの対象となる2つの「関数」というのは,定義域(積分区間)全域にわたって評価される.
例えば,あなたが書いた s(t)*g(t) であれば,
「関数」sや「関数」gの値は定義域全体にわたって評価され,なんやかんや計算され,その総和が取られる,という感じ.

他方,最初の式
> y(t) = (s(t)*g(t))×w(t)
における w(t) というのは,あるtの値1か所だけで評価されるだけ(※1)であって,
あるtの値におけるy(t)の値を算出する際には「定数」として見れる.

で,等価かどうか?と問われている3つの式においては
いずれもw(t)が畳み込み対象の「関数」として書かれているように見えるから,
上記より,「関数」wの値は,定義域全体にわたって評価され,何だかんだでその総和が出てくる感.
このことは前記(※1)と異なる結果になると思われるので,
3つの式はいずれも最初の式とは等価ではないと思う.

要するに,畳み込み演算において,wが「関数」として扱われているのか,それとも単なるw(t)という「値」として扱われているのか
というのが異なる.
(そして,
> y(t) = s(t)*(g(t)×w(t))
では,そのどちらの意図で式が書いてあるのかが何となく読み取れない.
このように書いた場合は前者だろうと思うけど,仮に後者側であれば,これは最初の式と「等価」になるのかな.)

Name: 黄葉の季節
[URL]
Date: 2017年10月12日(木) 13:59
No: 11
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

お返事ありがとうございます。
> wが「関数」として扱われているのか,それとも単なるw(t)という「値」として扱われているのかというのが異なる.

「数式(公式)」と書いたので、"単なるw(t)という「値」" とするはずはないですね?!
"単なるw(t)という「値」"なら、算数レベルの問題になり、「公式の等価性」うんぬんが出ません。

だいたい、積分関連の公式は関数を対象で、離散化に関しても、ここで議論する意思はありません。

自分が最初から最後まで、質問したのはただ一つ:
下記の四つの式の間等価または非等価を判断する方法です。
y(t) = (s(t)*(g(t))×w(t)
y(t) = s(t)*(g(t)×w(t))
y(t) = s(t)×(g(t)*w(t))
y(t) = (s(t)*w(t))×g(t)

「*」: convolution 積分計算を表し、「×」:通常の掛け算

★★ 上記数式表現に不理解や、疑問のある方は私よりこの分野に不案内である可能性が高いので、
このトピックを無視して頂ければ結構です。
特殊な質問ですから、(申し訳ございません)
分からない方でも他の分野では高い水準を持っていらっしゃるのは分かります。

数学が得意な方 ご教授お願い致します。

◆ 因みに、上記諸式間の関係について自分もある程度判断できます==直感的に。
◆ ただ、確かな数学原理に基づいて単純明快に説明するのに困っております。

これまでとこれからのどの方の返答にも感謝の気持ちいっぱいです。
知識や情報をいただいたのです。

Name: usao
[URL]
ハッカー(140,412 ポイント)
Date: 2017年10月12日(木) 17:08
No: 12
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

Offtopic :
> 自分が最初から最後まで、質問したのはただ一つ:
> 下記の四つの式の間等価または非等価を判断する方法です。

いいえ,違います.
あなたが書いた質問文は

> さて、上式と等価的な関係を持つ式はどれでしょうか

という数学クイズ紛いの人を舐めくさったような1文だけです.

> 判断の根拠や方法

を出せという要求は,相手の反応を見てからの完全なる後出し.

で,ここで,「判断」する主体は一体何になるのですか?
人間ですか? それともプログラムなんですか?
前者であればもう完全に場違いですし,
後者であれば,どういう方法論を望むのかくらいは先に説明すべき.

あと,完全に答えだけをよこせという丸投げ質問であることも,ここのフォーラムルールに違反気味なんですよね.


例えば
y1(t) = A(t) × ( ∫B(τ)dτ )

y2(t) = B(t) × ( ∫A(τ)dτ )
とは
等価ですか? その答えの論拠は?
みたいな問に対する模範解答を質問者様がまず示したりすれば,
望まれる回答の形式が他者に伝わるのかもしれませんね.

Name: usao
[URL]
ハッカー(140,412 ポイント)
Date: 2017年10月12日(木) 19:44
No: 13
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

Offtopic :
> y(t) = (s(t)*(g(t))×w(t)
> y(t) = s(t)*(g(t)×w(t))

上側は
w(t)∫{s(t-τ)g(τ)}dτ
下側は
∫{s(t-τ)(g(τ)w(τ))}dτ = ∫{s(t-τ)g(τ)w(τ)}dτ
で,
両者の違いはwが∫の外側にあるか内部にあるか.

この2つが等しくなるのはw(t)がtによらず定数である場合.
つまり一般には成り立たない.

…みたいな?

Name: 黄葉の季節
[URL]
Date: 2017年10月12日(木) 23:41
No: 14
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

[解決!]

お返答ありがとうございます
何百行も書かれましたが、私にとってたったの2行が有意義: (時間を有効に利用したい... 笑)
> この2つが等しくなるのはw(t)がtによらず定数である場合.
> つまり一般には成り立たない.

good job!

自分の説明不足にお詫び致します。
有難うございました

Name: usao
[URL]
ハッカー(140,412 ポイント)
Date: 2017年10月13日(金) 10:03
No: 15
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

こんなてきとー説明で良いのですか? 以外すぎる…
仮に良いのだとしても,3つの式のうち一つしか説明していないのだけど,なぜこれで解決なんですか?

あなたよりも
>この分野に不案内
である我々には他の2式の話がクエスチョンマークのまま残ってしまいますので,
勝手に満足せずに
せめてあなたの最終的な答えくらいは提示して締めていただきたい.

Offtopic :
時間を有効利用したいのはあなただけではない.
まるで他者が悪いかのような言い方だが,
こんなド素人の私が2分くらい考えて書いた程度の文面で解決してしまうのであれば,
そもそもあなたが最初から【他者に意味がわかる質問】を書いてさえいればもっと速やかかつ簡潔に終わった話だったろうに.

Name: Math
[URL]
Date: 2017年10月14日(土) 22:47
No: 16
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

畳み込み積分は自動制御理論で重要な”伝達関数”をあらわす式でありインパルス応答の解析、音、画像処理などに広く応用されます。
最初は試行錯誤しながら理解していくもので誰も一度にはむりでしょうね(^^;
y(t) = (s(t)*g(t))がコンボリュウションを表すとして
y(t) = s(t)*(g(t)×w(t))ーーーsと(gxw)のコンボリュウションだから明らかに違う
y(t) = s(t)×(g(t)*w(t))ーーーgとwのコンボリュウションだからこれも明らかに違う
y(t) = (s(t)*w(t))×g(t)ーーーsとWのコンボリュウションだからこれも明らかに違う
どうみたってこんなのが等価になりえないよね。何か勘違いしていると思いますよ!。

Name: Math
[URL]
Date: 2017年10月15日(日) 09:34
No: 17
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

いまのパソコンは高度な数学的・物理的援用を受けてシミュレーションを実行するアプリが小学生でも使える【スマホは5歳の孫でも音声制御で使える(^^;】。この問題に取り組んだだけでも大きな進歩ですよ。
アップルのウォズニアックは6歳の時、アマチュア無線の免許を取得し、自作キットのアマチュア無線機を組み上げた。13歳の時に、トランジスタの組み合わせによる原始的なコンピュータ(二進加減算機)で科学コンクールに優勝すしている。
失敗こそ成功の基。ここではどんな質問OK。回答者がおこるくらいがいいですよ!
あいかわらず頓珍漢なこを安全圏にいると思っていってる輩がいるのでその文章を紹介しますね。ひとりは自分勝手に間違いでいいがりをつけあとで大きな文字であやまった【(^^;その経緯も紹介しますね。】まあ人間はおもしろいよ。順次紹介しますね!
まあそんな風に思うのは質問者様に失礼すぎるね!!

Name: 黄葉の季節
[URL]
Date: 2017年10月15日(日) 20:50
No: 18
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

usaoさん
どうもあなたが喧嘩ばかりのためここに現れたようだね!
あなたにメンツを持たせるために、一応「goog job」をやっただけで、問題の本質が解決されたのではありません!

ここには問題を出すための掲示板であり、私が見た限り、出し方はいろいろありました。
そして、基本は人を舐めるために質問を出すのではないのを前提にこの掲示板が成立しています。
もしあなたの感覚で私の質問が「人を舐める」ために出していると思われたら、無視して良いのです。
何も特定のあなたに質問したのではないのです。

それに、私が質問を出した直後に、すでに「等価的な関係を持つ式はないですね。」という回答がありました。
これは明らかに「数学的な質問」と思われて、こんな回答をくれたのです。
こんなに早くはっきりした結論が出されたので、私は当然結論の根拠を求めたいのです。
これは決して「後出し」ではなくて、人間の基本思考様式や期待のロジックです。
そうしたら、思わず、あなたからの繰り返し説教や糾弾がやってきました。
問題の流れが攪乱されたので、本来もっと有識者(本当の専門家)の知恵をお伺いしたかったが、
やむなく、感謝の言葉を持って「解決」にしました。

それから、「解決」したにもかかわらず、あなたが相変わらやってきて、他人を批判や悪口を言い続け。。。。
いったい君がなんのためにここに存在するの?

Name: Math
[URL]
Date: 2017年10月16日(月) 07:00
No: 19
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

>ひとりは自分勝手に間違いでいいがりをつけあとで大きな文字であやまった【(^^;その経緯も紹介しますね。】まあ人間はおもしろいよ。順次紹介しますね
そいつだね。初心者以前の間違いをして私に言いがかりをつけ思いっきり罵詈雑言をあびせ続けたもんでしたね(^^;過去ログをみてるけどまだみあたらないね。まあ心根はいいやつだと思うのだ他のやつがね(^^;朱に交われば赤くなるからね!

Name: Math
[URL]
Date: 2017年10月16日(月) 07:47
No: 20
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

(たしかみけCATさんに相談してC言語だから英語版でしらべてもらってOKだからテストしてるのに全く読まないで ”自分の思い込み” の強いひとでそれをくどくどいうの閉口したよね(^^;  )

Name: usao
[URL]
ハッカー(140,412 ポイント)
Date: 2017年10月16日(月) 10:40
No: 21
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

おっと,
>何百行も
ご批判の文面をいただいてますね.
私の態度だけが一方的に悪いと見えているならまぁそう捉えて頂いていても構いませんけども,
それ以外の部分:

> 仮に良いのだとしても,3つの式のうち一つしか説明していないのだけど,なぜこれで解決なんですか?
>
> あなたよりも
> >この分野に不案内
> である我々には他の2式の話がクエスチョンマークのまま残ってしまいますので,
> 勝手に満足せずに
> せめてあなたの最終的な答えくらいは提示して締めていただきたい.

の「内容」に関しては間違ったことは無いと自負していますが,いかがでしょうか.
せめて この部分くらいは まともな形にして頂きたい.
(私のメンツだとか,余計なことに気をまわして頂く必要はありませんから)
本質が解決されていないというのであれば,
・どこがどう不十分なのか
・じゃあどのような答えを求めているのか
を 【具体的に説明】 して下さればよいと思うのですが.
Offtopic :
まぁ,私の書いている事柄では内容がほんとにゴミすぎて話にもならないというのであれば,私の側は放置されてもよいですけども,
このトピックにはもっと数学分野に深い知見と経験をお持ちであることを匂わせている方が現れておられるわけですし,
そちら側からの問いかけ(No.8とか)には答えてみてもよいのではありませんか?



> Mathさん
他者の間違いを掘り起こして人格攻撃するのも楽しいのでしょうが,
(やるにしてもその話題のトピックでやるか,あるいは私個人宛に直にご意見下さるとよいのですけど)
それはそれとして,
> 明らかに違う
という書き方では,(このトピックでは)回答にならないみたいですよ?
そう言い切るための論拠が欲しいらしいですから答えてあげたらどうですか? なぜ答えないのですか?

>どうやって数学の演算子法/作用素法を用いて、
>下記の四つの式の間等価または非等価を判断できるのでしょうか。
という問いかけも放置状態になってますよね?

Name: Math
[URL]
Date: 2017年10月16日(月) 11:04
No: 22
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

まだそんなとぼけたことをいってるの。コンボリュウションがわかんないの。私は高2でミクシンスキーの演算子の本を読み”電気理論:過渡現象編”をマスターして高3で”電気主任技術者:国家試験”に合格したけど これだけサイトを紹介しても見てない(単に分からないのかな?)みたいだね。まあ今日、明日は外出しなくてならないのでひまができたら説明してあげましょう。(不思議だね。高校で十分理解できたけど今の数学レベルはおちたのかな)

Name: Math
[URL]
Date: 2017年10月16日(月) 11:18
No: 23
(OFFLINE)

 Re: C言語で信号処理―――畳み込み積分の性質

日記に書いてるように信号処理に使われるよ。もしかしてFFTもしらないのか。


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[23人]