如何在Matlab中将高斯脉冲“分解”为离散部分

时间:2015-11-29 01:21:58

标签: matlab gaussian pulse

我需要将连续的Gaussian脉冲分解为50 discrete parts,这样我就可以在计算中使用50个单独振幅中的每一个。这是我尝试过的:

% Gauss pulse discretisation
tg = 20*10^(-3);         % pulse duration [sec]
B1 = 1;                  % max amplitude [muT]
t  = -tg/2:tg/50:tg/2;   % sampling times
sd = 0.25;               % pulse standard deviation
% pulse shape
p  = B1*exp(-((t-tg/2).^2)/(2*sd.^2));
plot(t,p);

然而,情节看起来不像20ms in duration的高斯脉冲!如何定义sampling time有问题吗?例如,如果sampling time被定义为

t  = -1:tg/50:1

然后脉冲确实看起来像高斯,但它在5001个零件中被分解。有人可以指点我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

为了让你的高斯在绘制时看起来像高斯,你需要确保:(1)在它的中心周围采样,(2)你的采样间隔远小于标准偏差(SD) ),和(3)你每侧至少采样2或3个SD,这样你就可以看到衰变。因此,在您的示例中,由于高斯以tg\2为中心,并且由于您的SD为sd = 0.25(顺便说一下SD设置脉冲持续时间,而不是tg),因此请延长采样间隔, SD作为度量(而不是tg),并将其移动以使其以均值为中心。使用linspace

更容易完成所有这些操作
t = linspace(-3*sd, 3*sd, 50) + tg\2;

如果您还需要20毫秒的脉冲持续时间,请将sd设为20毫秒,而不是tg。还要注意,“持续时间”实际上是高斯定义的问题,因为它延伸到+ - 无穷大。您必须定义类似“脉冲持续时间从-2 SD到+2 SD”的内容,这意味着有效脉冲持续时间是根据尾部衰减的程度来定义的。

% Gauss pulse discretisation
tg = 0;         % pulse center [sec]
B1 = 1;         % max amplitude [muT]
sd = .5*20*10^(-3);% half the pulse duration (msec)
t  = tg/2 + linspace(-3*sd,3*sd,50);  
% pulse shape
p  = B1*exp(-((t-tg/2).^2)/(2*sd.^2));
plot(t,p,'.-');

Gaussian