matlab - 有人可以解释一下 Matlab std() 实现逻辑吗?
问题描述
根据文档,std函数计算每列的标准偏差。但是,当我对第一列使用标准偏差公式时,我的结果与 Matlab 的结果不同。
Matlab的结果如下:
A = [4 -5 1; 2 3 5; -9 1 7];
S = std(A)
S = 1×3
7.0000 4.1633 3.0551
通过对第一列使用标准偏差公式,我得到:
sqrt(((4 + 1) ^ 2 + (2 + 1) ^ 2 + ( - 9 + 1) ^ 2) / 3) =
5.71547606649
5.71547606649 与 7.00 不同。我在做什么错 D: ?
非常感谢您的宝贵时间,祝您有美好的一天:D!
解决方案
看看标准公式。根据 matlab 文档,它说sqrt(1/(N-1) etc)
你必须除以 2 而不是 3 。
请参阅更多关于std 文档的章节。
此外,您可以使用它来将 std 公式与1/N, std(A,1)
. 第二个输入指定要使用的公式,0 表示使用1/(N-1)
公式(默认),1 表示使用1/N
公式。
推荐阅读
- javascript - 如何在javascript中删除数组中的对象
- javascript - 无论我做什么,Multer 都不会填充 req.file
- php - 无法自动装配参数 $request
- python - 当我们应用恒等运算符时,为什么两个具有完全相同数据的列表在 Python 中显示不同的内存地址?
- stripe-payments - Stripe 初始支付网关合作伙伴
- slack - 在 slack 中使用 Slash 命令运行 Postman 集合
- r - gsub从R中的向量中提取点前后的字符串?
- r - s3类的r中分类树问题的递归
- javascript - 如何检查浏览器是否支持 iframe 沙盒?
- linux - yocto 元虚拟化:启动守护程序时出错:未安装设备 cgroup