matlab中std表达式是怎么计算的(add 5pts)

来源:百度知道 编辑:UC知道 时间:2024/06/17 20:40:26
例如(比方说):a=[9 8 7 6]
b=[5 4 3 5]
用std(a,b)
那么这个std函数是怎么计算a和b这两个矩阵的呢?
计算过程~~~,高等数学答案你写的东西,我也会,我是想知道这个过程是哪个数加哪个数,哪个数减哪个数

你的命令和你的想法就不匹配 。

如果是std(a)

那么 就是 sqrt([(a(1)-mean(a))^2 + (a(2)-mean(a))^2 + .../(n-1)])

如果是std(a, 1)

那么 就是 sqrt([(a(1)-mean(a))^2 + (a(2)-mean(a))^2 + .../n])

其中mean(a) = a(1) + a(2) + .... /n

上面两者的区别在于用n或者n-1进行单位化的问题,主要是就是对无偏估计的一种修正,相对来说,n-1用得广泛一些。

你这样的命令std(a, b)

其实就等于是给a中的每一个元素赋了一个权重,因为在默认的状态下,a中的每个人元素是等权重的,但是现在你用了b,在算法里面会被自动单位化:
b1 = [5/17 4/17 3/17 5/17]

然后这个b1就被视为是a中每个元素相对应的权重,来以此进行下一步的std运算。

把std的定义搞清楚就行。

我想这是matlab的一个bug吧。。。你不能理解,很正常,因为我们并没有对两个向量的联合标准差进行定义,两个向量定义的是协方差!实际上你查一下std函数的帮助会发现根本就没有你的这种调用方法,当然也不知道它是怎么给出那个结果来的了,有兴趣的话,你可以去试验加猜测,看能不能猜出它是怎么计算出来的,但这没有任何意义,因为我们本就没有定义这个东西。

std表示标准差函数
>> a=[9 8 7 6]
b=[5 4 3 5]

a =

9 8 7 6

b =

5 4 3 5

>> std(a,b)

ans =

1.194

你可以参看下edit std%std主要就调用了VAR函数
再看下edit