1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LTspiceで複数のパラメータを.stepさせたい

Last updated at Posted at 2020-01-07

やりたいこと

LTspiceで、複数のパラメータの組み合わせでstepしたい。

背景

複数のパラメータをステップで回したい場合、普通にそれぞれのパラメータに.stepを使用してしまうと、それぞれのパラメータが総当たりとなって、シミュレーションの回数と時間が膨大になってしまいます。

たとえば、
.step param A 1 2 (n=2)
.step param B 3 4 (m=2)
とした場合、シミュレーションは
A=1, B=3
A=2, B=3
A=1, B=4
A=2, B=4
の合計4回実行されてしまいます。(n*m回)

これを、
A=1, B=3 (1つめの値どうし)
A=2, B=4 (2つめの値どうし)
に絞って実行したい。

解決策

.funcコマンドを使います。

.func  sel(x, p0, p1) {sub(x==0)*p0 + sub(x==1)*p1}
.param A sel(x, 1, 2)
.param B sel(x, 3, 4)
.step  param x list 0 1

.funcコマンドでsel()関数を定義します。(関数の名前はなんでも良い)

式中のsub()は、引数が0.5以下なら0、0.5より大きければ1を返す関数です。

たとえば、xが0のとき、第一項はx==0True(1)なのでsub()1を返し、第二項はx==1False(0)なのでsub()0を返します。

それぞれを、引数p0, p1と掛けて足すことで、sub()Trueになる項の引数のみが残り、パラメータxの値によって1つの値を抜き出すことができるというわけです。

あとは、A, Bそれぞれの数値を定義し、Xを0→1で.stepさせればOK。

パラメータの組み合わせを増やしたければ、関数の引数を増やせば対応可能です。

参考

こちらの動画を参考にさせてもらいました。
伝説のSpice : LTSpiceの使い方 小技その11
https://www.youtube.com/watch?v=sT_qJ-84haQ&feature=youtu.be

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?