Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 电磁法计算GMM参数时的底流处理_Algorithm_Matlab_Signal Processing - Fatal编程技术网

Algorithm 电磁法计算GMM参数时的底流处理

Algorithm 电磁法计算GMM参数时的底流处理,algorithm,matlab,signal-processing,Algorithm,Matlab,Signal Processing,我目前正在matlab中对logspecrum样本矩阵进行培训,我一直在处理底流问题。我知道我需要使用log来处理底流问题。 尽管如此,当我计算平均值(mue)时,我仍然在为uderflow而挣扎,因为它是负的,我无法处理日志,所以我需要实际的下溢值。 以下是我正在使用的等式: 在MATLAB代码中,为了避免下溢,我计算log_tau,但在计算mue时,我需要exp(log(tau))为零。 我附上相关的MATLAB代码 **在我调用的代码中,变量alpha是tau for i = 1 : 5

我目前正在matlab中对logspecrum样本矩阵进行培训,我一直在处理底流问题。我知道我需要使用log来处理底流问题。 尽管如此,当我计算平均值(mue)时,我仍然在为uderflow而挣扎,因为它是负的,我无法处理日志,所以我需要实际的下溢值。 以下是我正在使用的等式:

在MATLAB代码中,为了避免下溢,我计算log_tau,但在计算mue时,我需要exp(log(tau))为零。 我附上相关的MATLAB代码 **在我调用的代码中,变量alpha是tau

for i = 1 : 50
        log_c = Logsum(log_alpha,1) - log(N);
        c = exp(log_c);
        mue = DataMat*alpha./(repmat(exp(Logsum(log_alpha,1)),FrameSize,1));
        log_abs_mue = log(abs(mue));
        log_SigmaSqr = log((DataMat.^2)*alpha) - repmat(Logsum(log_alpha,1),FrameSize,1) - 2*log_abs_mue;
        SigmaSqr = exp(log_SigmaSqr);
        for j=1:N
            rep_DataMat(:,:,j) = repmat(DataMat(:,j),1,M);
            log_gamma(j,:) = log_c - 0.5*(FrameSize*log(2*pi)+sum(log_SigmaSqr)) + sum((rep_DataMat(:,:,j) - mue).^2./(2*SigmaSqr));
        end
        log_alpha = log_gamma - repmat(Logsum(log_gamma,2),1,M);
        alpha = exp(log_alpha);
    end        
    c = exp(log_c);
    SigmaSqr = exp(log_SigmaSqr);

有人知道我如何避免这种情况吗?或者需要在代码中修复什么?

我所做的是将这一行添加到MATLAB代码中:

mue(isnan(mue))=0; %fix 0/0 problem
还有这个:

SigmaSqr(SigmaSqr==0)=1;%fix if mue_k = x_k
不确定这是否是最好的解决方案,但似乎有效。。。 有更好的主意吗