MATLAB Answers

0

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

Asked by Daisuke Kusakari on 28 Jan 2019
Latest activity Answered by Naoya
on 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);
で発生
これらのエラーを回避してのこぎり波のラプラス変換を実施するにはいかがすればよろしいでしょうか。
当方、初心者のため、基本的な質問で申し訳ございませんが、ご回答お願いいたします。

  0 Comments

Sign in to comment.

1 Answer

Naoya
Answer by Naoya
on 28 Jan 2019
 Accepted Answer

のこぎり波を作成する関数 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

  0 Comments

Sign in to comment.