【问题标题】:MC Gaussian distribution for inverter threshold voltage逆变器阈值电压的 MC 高斯分布
【发布时间】:2018-01-26 14:56:52
【问题描述】:

我需要重叠使用 MATLAB 和 LTspice 生成的阈值电压的 MC 高斯分布。如果我使用相同的平均值(即 0.3558)和 sigma 值(3*sigma=10% 即 sigma=0.0333)模拟然后 MATLAB 分布比 LTspice 分布宽得多。另一方面,如果我对我的模拟和 LTspice 中的 sigma = 10% 和 MATLAB 中的 sigma = 0.0333 使用相同的平均值,那么两个图都会重叠。但是我需要为我的两个模拟加入相同的 sigma 值。我可以知道 LTspice 和 MATLAB 中的 sigma 和 3*sigma 之间的关系是什么,我该如何解决这个问题?

MATLAB 代码已附在下面。

n=     5000; %no of runs%
m=     0.3558; %nominal Vth/Mean%
sd=    0.0333; % 3*sigma standard deviation%
Vth=   m + sd*randn(n,1); %Gaussian distribution of Vth%
figure(2);
hist(Vth); %Histogram of Vth%`

已附上生成高斯分布的LTspice代码。

VTH1=.3558*(1+gauss(0.1)) % sigma=10%

【问题讨论】:

  • 你有什么问题? sigma 和 3*sigma 有什么关系?答案是乘以 3。
  • 当我在 LTspice 中使用 sigma 和在 MATLAB 中使用 3*sigma 时,我得到了相同的结果。但是当我在两者中使用 sigma 或 3*sigma 时,我是否需要得到相同的结果我的模拟?我可以知道为什么会有这种差异吗?
  • 问题不就是高斯的表达方式吗?在您的 LTspice 代码中,您应该执行与在 Matlab 中相同的操作:m + sd*gauss(1.0)。问题是在 LTspice 中,您的代码相当于:.3558 + (.3558*0.1)*randn()。问题确实是您的因子 .3558 会影响 LTspice 代码中的均值和方差。
  • 但是我在 LTspice 和 MATLAb 中生成高斯分布的方式对吗?我可以采用其中一种方式吗?

标签: matlab gaussian montecarlo


【解决方案1】:

Matlab 中的randn() 生成分布为 (0,1) 的随机数。

LTspice 中的gauss(x) 生成分布为 (0,x) 的随机数。

因此,如果要生成一个带有分布(m,v)的数字,则需要在Matlab中执行:

m + v*randn();

在 LTspice 中:

m + gauss(v)

或者如果你想让它看起来像在 Matlab 中:

m + v*gauss(1.0)

【讨论】:

  • 我可以在 MATLAB 中使用它吗? .3558 + (.3558*0.1)*randn()
  • 可以,或者.3558*(1.0 + 0.1*randn())
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 2012-09-12
相关资源
最近更新 更多