1

normrndを使用して、平均値とシグマ値が 1:45 から変化するサイズ 1x45 のベクトルとして表される正規分布関数を作成し、このシミュレートされた PDF を理想的な値でプロットしたいと思います。

以下に示すような規範を作成するたびに、

Gaussian = normrnd([1 45],[1 45],[1 500],length(c_t));

次のエラーが表示されます。

Size information is inconsistent.

この PDF を作成する理由は、可変ガウス ノイズ モデルを使用してトレーサーの化学反応速度を計算するためです。基本的に、私はトレーサーの理想的な特性を持っています。ガウス ノイズを追加し、トレーサーの化学反応速度がノイズの変化によってどのように変化するかを理解したいと思います。

基本的に、トレーサーの化学動力学を理解するためのさまざまな計算モデルがあり、そのうちの 1 つは 3 つのコンパートメント モデルであり、その他は形状解析、拘束形状解析モデルです。

私は現在、それぞれのモデルすべてに理想的な曲線を持っています。これらのモデルにノイズを追加し、特定のモデルがさまざまなノイズでどのように動作するかを理解したいと考えています。

これが、 normrndを使用して可変ノイズ モデルを作成し、このモデルを理想的な特性に追加して、ノイズ (シグマ) 対エラーを計算する理由です。トレーサーの化学反応速度の推定。

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

上記の関数からの出力特性は次のとおりです。ここでは、ノイズを視覚化できませんでした

ここに画像の説明を入力

4

2 に答える 2

0

この発言の問題点

Gaussian = normrnd([1 45],[1 45],[1 500],length(c_t));

2 つのミュー値と 2 つのシグマ値を指定し、サイズ [1 500] x 長さ (c_t) の行列を求めることです。サイズを均一な方法で渡す必要があるため、どちらか

Gaussian = normrnd(mu, sigma,[500 length(c_t)]);

また

Gaussian = normrnd(mu, sigma, 500, length(c_t));

次に、mu/sigma ベクトルのサイズが求める行列のサイズと一致することを確認する必要があります。したがって、出力として 500 x length(c_t) 行列が必要な場合は、500 x length(c_t) (mu,sigma) ペアを渡す必要があります。mu または sigma の一方だけを変更したい場合は、もう一方のパラメーターに単一の値を渡すことができます

平均値が固定され、シグマが着実に増加する正規分布から N 値を取得するには、次のことができます。

noise = @(mu, s0, s1, n) normrnd(mu, s0:(s1-s0)/(n-1):s1, 1,n)

ここで、s0 は最小のシグマ値で、s1 は最大のシグマ値です。mu=0 で sigma が 1 から 5 に増加する分布から 10 個の値を取得するには、次のようにします。

noise(0,1,5,10)

シグマの増加にランダム性を導入したい場合は、次のことができます

noise_rand = @(mu, s0, s1, n) normrnd(mu, (s0:(s1-s0)/(n-1):s1) .* rand(1,n), 1,n)
于 2014-04-14T17:45:33.653 に答える