のこぎり波のラプラス変換

5 vues (au cours des 30 derniers jours)
Daisuke Kusakari
Daisuke Kusakari le 28 Jan 2019
Réponse apportée : Naoya le 28 Jan 2019
表題について、下記のコードを作成し、計算すると
syms t;
H=laplace(sawtooth(t))
エラー: 入力引数は 'double' でなければなりません。
とのエラーが発生したため、更に下記のコードに訂正しました。
syms t;
double(t);
H=laplace(sawtooth(t))
すると、別のエラーが発生しました。
エラー: symengine式を double の配列に変換できません。
エラー: sym/double (line 672)
Xstr = mupadmex('symobj::double', S.s, 0);
で発生
これらのエラーを回避してのこぎり波のラプラス変換を実施するにはいかがすればよろしいでしょうか。
当方、初心者のため、基本的な質問で申し訳ございませんが、ご回答お願いいたします。

Réponse acceptée

Naoya
Naoya le 28 Jan 2019
のこぎり波を作成する関数 x = sawtooth(t) につきましては、Signal Processing Toolbox で提供される関数で、時間配列 t に対応するのこぎり波出力の点数 x を出力します。
こちらはMATLAB / Symbolic Math Toolbox を用いて 数式を作成するものを目的としているものではなく、数値的に演算を行うためのベクトルを作成するものとなります。
Symbolic Math Toolbox を用いて、数式的に表現するために利用できそうな関数としては、triangularPulse() となります。
こちらは、単発の三角パルスを作成する関数となります。
例えば、
>> syms t
>> f = triangularPulse(0,1,1,t)
f =
t*rectangularPulse(0, 1, t)
>> ezplot(f,[0 3])
で単一ののこぎり波を数式として表現することができます。
これをラプラス変換すると、
>> laplace(f)
ans =
1/s^2 - exp(-s)/s^2 - exp(-s)/s
で求めることができます。
単一ののこぎり波については、時間シフトした波を加算することも可能です。
>> f = triangularPulse(0,1,1,t) + triangularPulse(1,2,2,t)
f =
(t - 1)*rectangularPulse(1, 2, t) + t*rectangularPulse(0, 1, t)
>> laplace(f)
ans =
1/s^2 - exp(-s)/s^2 - exp(-s)/s - (exp(-2*s)*(s - exp(s) + 1))/s^2

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!