使用 MATLAB 的标准偏差
Standard deviation using MATLAB
我正在尝试使用公式
在 MATLAB 中计算标准差
for i=1:n
s=sqrt(sum((h(i)-mean(h))^2)/(n-1));
end
其中n
为单个列向量的行数,但与std(h)
计算的结果不同。在我的项目中我不能使用 std function
请帮帮我。
在我看来,最好不要使用 for 循环,而是使用矢量化代码。
s1 = sqrt(sum((h - mean(h)).^2)./(n-1))
这里 sum
负责由 for 循环完成的求和。
如果您确实想使用 for 循环,则需要在循环内添加每个单独的项,然后取其平方根;即不要在循环内使用 sum
:
clc
clear
h = rand(1,100);
M = mean(h);
n = length(h);
s0 = 0; %// Initialize s0, the standard deviation you wish to calculate.
for i=1:n
s0 = s0 + (h(i)- M)^2; %// add each calculated s0 to its previous value. That's the sum.
end
s0 = sqrt(s0/(n-1))
%// Calculate values using vectorized code of Matlab std function.
s1 = sqrt(sum((h - mean(h)).^2)./(n-1))
s2 = std(h)
正在检查 s0、s1 和 s2:
s0 =
0.2842
s1 =
0.2842
s2 =
0.2842
我不知道 Matlab,但唯一的循环应该是所有(数据 - 平均值)^2 的总和。
/(n-1) 或 sqrt() 没有循环。
是的,看起来你有类似 s.d 的东西。 =
但您希望它匹配
因此对通过该求和找到的变量执行 /(n-1) 和平方根运算。
我正在尝试使用公式
在 MATLAB 中计算标准差for i=1:n
s=sqrt(sum((h(i)-mean(h))^2)/(n-1));
end
其中n
为单个列向量的行数,但与std(h)
计算的结果不同。在我的项目中我不能使用 std function
请帮帮我。
在我看来,最好不要使用 for 循环,而是使用矢量化代码。
s1 = sqrt(sum((h - mean(h)).^2)./(n-1))
这里 sum
负责由 for 循环完成的求和。
如果您确实想使用 for 循环,则需要在循环内添加每个单独的项,然后取其平方根;即不要在循环内使用 sum
:
clc
clear
h = rand(1,100);
M = mean(h);
n = length(h);
s0 = 0; %// Initialize s0, the standard deviation you wish to calculate.
for i=1:n
s0 = s0 + (h(i)- M)^2; %// add each calculated s0 to its previous value. That's the sum.
end
s0 = sqrt(s0/(n-1))
%// Calculate values using vectorized code of Matlab std function.
s1 = sqrt(sum((h - mean(h)).^2)./(n-1))
s2 = std(h)
正在检查 s0、s1 和 s2:
s0 =
0.2842
s1 =
0.2842
s2 =
0.2842
我不知道 Matlab,但唯一的循环应该是所有(数据 - 平均值)^2 的总和。
/(n-1) 或 sqrt() 没有循环。
是的,看起来你有类似 s.d 的东西。 =
但您希望它匹配
因此对通过该求和找到的变量执行 /(n-1) 和平方根运算。