LPFについての質問です。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
かざま

LPFについての質問です。

#1

投稿記事 by かざま » 7年前

1次のLPFの伝達関数はω/(1+ω/s)です。(ωはカットオフ周波数)
これを利用して、θ=cost+0.0001cos1000を0.001秒ごとに0から10秒まで疑似微分したいのですが、
θをラプラス変換して、伝達関数と掛け合わせてから、逆ラプラス変換でいいですか?
問題の本質がまず理解できてないようなので、教えていただけると嬉しいです。
よろしくお願いします。

Math

Re: LPFについての質問です。

#2

投稿記事 by Math » 7年前

>θをラプラス変換して、伝達関数と掛け合わせてから、逆ラプラス変換でいいですか?

ローパスフィルタの出力波形はそうなりますが ”0.001秒ごとに0から10秒まで疑似微分”が 意味不明ですね。(^^;
http://ayumi.cava.jp/audio/ac/node7.html

かざま

Re: LPFについての質問です。

#3

投稿記事 by かざま » 7年前

θをLPFで高周波をカットした後に、0秒から10秒の間で微分がしたいのです。
ラプラス変換や微分などがプログラミングでできるのかも分かりません。
よろしくお願いします。

かずま

Re: LPFについての質問です。

#4

投稿記事 by かずま » 7年前

かざま さんが書きました:1次のLPFの伝達関数はω/(1+ω/s)です。(ωはカットオフ周波数)
6. 伝達関数と周波数応答 - 趣味人のブログ - suzumushi0 - はてなブログ には、
1次のLPFの伝達関数は ω/(s + ω) と書かれているんですけど。
かざま さんが書きました: これを利用して、θ=cost+0.0001cos1000を0.001秒ごとに0から10秒まで疑似微分したいのですが、
高校の数学で cos の微分は -sin と習いました。
だから、θ = cos(t) + 0.0001 cos(1000) なら、
θ' = dθ/dt = -sin(t) ですよね。

また、微分は接線の傾きなので、
θ' = dθ/dt = (θ(t + Δt) - θ(t)) / Δt
だということも分かります。

コード:

#include <stdio.h>   // printf
#include <math.h>    // cos, sin

double theta(double t) { return cos(t) + 0.0001 * cos(1000); }  // θ(t)

double theta1(double t) { return -sin(t); }  // 微分 θ' すなわち dθ/dt

int main(void)
{
    int i, n = 10000;         // 分割数
    double a = 0, b = 10;     // 0秒から 10秒まで
    double dt = (b - a) / n;  // dt = 0.001秒

    for (i = 0; i <= n; i++) {
        double t = a + i * dt;
        double g = (theta(t + dt) - theta(t)) / dt;  // 疑似微分
        printf("%6.3f: %9f  %9f\n", t, g, theta1(t));
    }
}
実行結果

コード:

 0.000: -0.000500  -0.000000
 0.001: -0.001500  -0.001000
 0.002: -0.002500  -0.002000
 0.003: -0.003500  -0.003000
 0.004: -0.004500  -0.004000
 0.005: -0.005500  -0.005000
    :
 1.568: -0.999997  -0.999996
 1.569: -0.999999  -0.999998
 1.570: -1.000000  -1.000000
 1.571: -1.000000  -1.000000
 1.572: -0.999999  -0.999999
    :
 3.139: -0.002093  -0.002593
 3.140: -0.001093  -0.001593
 3.141: -0.000093  -0.000593
 3.142:  0.000907   0.000407
 3.143:  0.001907   0.001407
    :
 6.281:  0.001685   0.002185
 6.282:  0.000685   0.001185
 6.283: -0.000315   0.000185
 6.284: -0.001315  -0.000815
 6.285: -0.002315  -0.001815
    :
 9.996:  0.541081   0.540660
 9.997:  0.541922   0.541501
 9.998:  0.542762   0.542342
 9.999:  0.543601   0.543182
10.000:  0.544441   0.544021
疑似微分と真の微分の値が近いですよね。
かざま さんが書きました: θをラプラス変換して、伝達関数と掛け合わせてから、逆ラプラス変換でいいですか?
ラプラス変換も伝達関数も私にはよくわかりません。

Math

Re: LPFについての質問です。

#5

投稿記事 by Math » 7年前

波動の解析にはフーリエ変換https://ja.wikipedia.org/wiki/%E3%83%95 ... 9%E6%8F%9Bが用いられ
高速フーリエ変換(英: fast Fourier transform, FFT)のプログラムは
https://ja.wikipedia.org/wiki/%E9%AB%98 ... 9%E6%8F%9B
沢山ある。
ラプラス変換は本質的にフーリエ変換と同等のものですが複素数領域 s で考察されるため広義の取り扱いが可能であり複素積分で説明される。

R-L-C回路では R*i + L*di/dt + i/c * ∫i dt = V であるから 微分演算子 s 積分演算子 l = 1/s を用いて

( R + sL + 1/sC ) i = V という s の代数方程式に変換でき解法が著しく容易になる。

しかし交流理論等 正弦波を扱うときは複素指数関数を使えばよいので(オイラーの公式
http://dixq.net/forum/viewtopic.php?f=3&t=19181
を使えばよいので s を jωt に置き換えればよい。

( ie^jωt の微分は jω*ie^jωt 積分は (1/jω)ie^jωt ゆえ)

( 電気理論では i は電流を表すので 虚数単位は j = √-1 であらわす )
あとは ここにhttp://ayumi.cava.jp/audio/ac/node7.html 詳しい説明がある。

***  ω は 2πf であり fo = ωo/2πはカットオフ周波数  ***
θ=cost+0.0001cos1000 はおかしいですね。(^^; )

かざま

Re: LPFについての質問です。

#6

投稿記事 by かざま » 7年前

>>かずまさん
伝達関数に関しては、微分までを含めて書いてしまっていました。

>>mathさん
元の問題でそのまま答えを教えてもらうのはどうかと思い、少し変えさせてもらってました。
正しくは、sint+10^(-7)sin10^(6)tです。
よろしくお願いします。

Math

Re: LPFについての質問です。

#7

投稿記事 by Math » 7年前

>正しくは、sint+10^(-7)sin10^(6)tです。

入力が sint+10^(-7)sin10^(6)t という値なのも少し変ですが 本当に?。元の問題自体 制御工学系 なのか 音響系 なのかその他の波動系であるにしても 周波数は 2πf * t の形になると思いますが。

>θをLPFで高周波をカットした後にに、
LPFの計算自体 理解ができましたか?

>あとは ここにhttp://ayumi.cava.jp/audio/ac/node7.html 詳しい説明がある。

>***  ω は 2πf であり fo = ωo/2πはカットオフ周波数  ***

(カットオフ周波数が決まらなければ計算のしようがないと思いますが?)

>0秒から10秒の間で微分がしたいのです。
数値微分は簡単です。

>ラプラス変換や微分などがプログラミングでできるのかも分かりません。
ラプラス変換の式さえ決定すれば計算はプログラムで できるでしょう。

(週末まだ忙しいのであまり時間がとれません。他の方から答えがあるでしょう。)

Math

Re: LPFについての質問です。

#8

投稿記事 by Math » 7年前

>カットオフ周波数が決まらなければ計算のしようがないと思いますが?)
LPF の C,R か L,Rの値が決定すればいいですよね。

かざま

Re: LPFについての質問です。

#9

投稿記事 by かざま » 7年前

制御工学系です。
速度を出す際に、位置を微分します。そういった際に使うと書かれています。

LPFの計算がいまいちわからないですね。
θをラプラス変換したものをかけるという認識ですが、違うのですかね…

URLも参考にしてるんですが、プログラミング以前に、その内容が理解できてません…

手元の資料ではカットオフ周波数は、ωであり、500程度に設定すると書かれています。

ラプラス変換や逆変換のプログラミングが自力では思いつきません。
ご教示をお願いします。

こちらに資料のほうも載せますのでよろしくお願いします。
https://i.imgur.com/E6K8xX9.jpg
https://i.imgur.com/iiGBSA5.jpg

Math

Re: LPFについての質問です。

#10

投稿記事 by Math » 7年前

これはプログラミングとは関係ないですね(^^;
機械工学系なので 電気工学系の制御工学での説明のほうが分かりやすいですね。
いまは時間がないのでラプラス変換の問題だけと思うので時間が取れた時説明します。(それまでに他の方から答えがあるでしょう。)
ωであり、500として計算します。sじたい”微分演算子”です。

かざま

Re: LPFについての質問です。

#11

投稿記事 by かざま » 7年前

数学の問題になるんでしょうかね…
微分演算子というのもさっぱり…

どなたかプログラミングの例とともに解説してほしいです。
よろしくお願いします。

かざま

Re: LPFについての質問です。

#12

投稿記事 by かざま » 7年前

問題の解き方だけでもわかる方本当にお願いします。

かざま

Re: LPFについての質問です。

#13

投稿記事 by かざま » 7年前

https://i.imgur.com/yXsENPk.jpg
https://i.imgur.com/LhIHXaC.jpg

こちらになります。
よろしくお願いします。

かざま

Re: LPFについての質問です。

#14

投稿記事 by かざま » 7年前

なんとかできました。
ありがとうございました。

返信

“C言語何でも質問掲示板” へ戻る