Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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
Matlab 如何根据均值和标准差确定两个矩阵的高阈值和低阈值_Matlab_Math_Image Processing_Probability_Probability Density - Fatal编程技术网

Matlab 如何根据均值和标准差确定两个矩阵的高阈值和低阈值

Matlab 如何根据均值和标准差确定两个矩阵的高阈值和低阈值,matlab,math,image-processing,probability,probability-density,Matlab,Math,Image Processing,Probability,Probability Density,我有两个矩阵属于高斯分布,大小是3x3。现在,我想估计它们矩阵的上下阈值。I表示每个矩阵的平均值和标准偏差为μ1;μ2和σ1;σ2. 高阈值和低阈值是相同的 T_hight=(μ1+μ2)./2+k1∗(σ1+σ2)./2 T_low=(μ1+μ2)./2-k2∗(σ1+σ2)./2 其中k1,k2为常数 我的问题是“我的公式正确吗?因为这是高斯分布,所以k1=k2,对吗?这是我的代码。你能帮我查一下吗?” 在您使用的公式中,联合标准偏差是错误的。它应该是 T_high=(μ1+μ2)./2

我有两个矩阵属于高斯分布,大小是3x3。现在,我想估计它们矩阵的上下阈值。I表示每个矩阵的平均值和标准偏差为μ1;μ2和σ1;σ2. 高阈值和低阈值是相同的

T_hight=(μ1+μ2)./2+k1∗(σ1+σ2)./2

T_low=(μ1+μ2)./2-k2∗(σ1+σ2)./2
其中k1,k2为常数

我的问题是“我的公式正确吗?因为这是高斯分布,所以k1=k2,对吗?这是我的代码。你能帮我查一下吗?”


在您使用的公式中,联合标准偏差是错误的。它应该是

T_high=(μ1+μ2)./2+k1∗sqrt((σ1^2+σ2^2)/2);
T_low=(μ1+μ2)./2-k2∗sqrt((σ1^2+σ2^2)/2);
由于您将所有18个像素视为属于同一分布,为什么不使用以下选项

v=[v1(:);v2(:)];
μ=mean(v); 
σ=std(v);
k1=k2=1; 
T_high=μ+k1*σ;
T_low=μ-k2∗σ1;

我不太清楚你在做什么。什么是k1,k2?你所说的“上下阈值”是什么意思?你在添加矩阵吗?如果是这样,请查看结果sd应为
sqrt(σ1^2+σ2^2)
。k1和k2为常数。它们是权重因子。T_high和T_low是我需要的低阈值和高阈值。我不确定我的公式是否正确?这是第一个问题。你们的参考值只是两个正态分布的和。我的分布是两个正态分布的平均值。我认为它们是不同的。平均值只是总和的一半,所以它是
(μ1+μ2)。/2+/-k1∗(sqrt(σ1^2+σ2^2))。/2
谢谢。使用std2时我错了。你的方法很好,但是如果我的maxtrix是大尺寸的呢。它能工作吗?std2用于二维矩阵,对于向量,它与std相同。因此,写std2(v1(:)是可以的,但写std(v1(:)或std2(v1)更为惯用。如果您的数据是一个逻辑矩阵,8位整数,16位整数,那么使用std2可能会提高速度。否则,std2只调用std。
v=[v1(:);v2(:)];
μ=mean(v); 
σ=std(v);
k1=k2=1; 
T_high=μ+k1*σ;
T_low=μ-k2∗σ1;