【发布时间】:2014-04-14 17:34:13
【问题描述】:
通过使用normrnd,我想创建一个正态分布函数,其均值和 sigma 值表示为大小为 1x45 的向量,从 1:45 变化,并用理想值绘制这个模拟 PDF。
每当我创建如下所示的normrnd 时,
Gaussian = normrnd([1 45],[1 45],[1 500],length(c_t));
我收到以下错误,
Size information is inconsistent.
创建此 PDF 的原因是计算具有可变高斯噪声模型的示踪剂的化学动力学。基本上我有一个示踪剂的理想特性,现在我想添加高斯噪声并了解示踪剂的化学动力学如何随着噪声的变化而变化。
理解示踪剂的化学动力学基本上有不同的计算模型,其中一种是三室模型,其他是形状分析模型、约束形状分析模型。
我目前对所有各自的模型都有理想的曲线,现在我想为这些模型添加噪声并了解每个特定模型在不同噪声下的行为
这就是为什么我想使用normrnd 创建一个可变噪声模型的原因,将此模型添加到理想特征并计算噪声(Sigma)与误差 - 该分析将给我一个近似估计不同模型在不同噪声和哪种模型适合于估算示踪剂的化学动力学。
function [c_t,c_t_noise] =Noise_ConstrainedK2(t,a1,a2,a3,b1,b2,b3,td,tmax,k1,k2,k3)
K_1 = (k1*k2)/(k2+k3);
K_2 = (k1*k3)/(k2+k3);
%DV_free= k1/(k2+k3);
c_t = zeros(size(t));
ind = (t > td) & (t < tmax);
c_t(ind)= conv(((t(ind) - td) ./ (tmax - td) * (a1 + a2 + a3)),(K_1*exp(-(k2+k3)*t(ind)+K_2)),'same');
ind = (t >= tmax);
c_t(ind)=conv((a1 * exp(-b1 * (t(ind) - tmax))+ a2 * exp(-b2 * (t(ind) - tmax))) + a3 * exp(-b3 * (t(ind) - tmax)),(K_1*exp(-(k2+k3)*t(ind)+K_2)),'same');
meanAndVar = (rand(45,2)-0.5)*2;
numPoints = 500;
randSamples = zeros(1,numPoints);
for ii = 1:numPoints
idx = mod(ii,size(meanAndVar,1))+1;
randSamples(ii) = normrnd(meanAndVar(idx,1),meanAndVar(idx,2));
c_t_noise = c_t + randSamples(ii);
end
scatter(1:numPoints,randSamples)
dg = [0 0.5 0];
plot(t,c_t,'r');
hold on;
plot(t,c_t_noise,'Color',dg);
hold off;
axis([0 50 0 1900]);
xlabel('Time[mins]');
ylabel('concentration [Mbq]');
title('My signal');
%plot(t,c_tnp);
end
上述函数的输出特征如下,这里我看不到任何噪音
【问题讨论】:
-
“从 1:45 变化”是什么意思?
normrnd的前两个参数是用于生成随机数的分布的均值和 sigma。另外,[1 500]是什么? -
@Jacob 我需要 500 个随机值,每个值都有不同的平均值和不同的 sigma,不确定我的表达是否正确
-
在任何人都能准确回答您的问题之前,您需要更清楚地解释自己。此外,当函数本身在样本之间不断随机变化时,变化以及均值和方差会告诉您有关特定函数的 PDF 的信息
-
您无法可视化噪声,因为与您绘制的值相比,您的噪声值非常小。 +/- 1 的噪声不会与超过 1000 的值进行比较,它是不可见的。另外请注意,不要盲目地将人们发布的内容复制并粘贴到您的代码中并期望它 100% 满足您的需求,特别是当问题从一开始就没有明确说明时,您可能需要调整我写的内容和使其适合您的特定需求。
-
我认为你应该考虑一下你的噪声模型。首先,为什么要增加噪声的平均值?这只会移动信号的平均值。其次,您想要一个噪声随时间增加的模型吗?或者您只是想看看信号在不同类型噪声下的表现如何?