以及X的平均值(算出来应该是一个p维的列向量)
我用cov和mean算出来是不一样的,是不是行列互换的问题呢?求高手指点,如果我看懂了,绝对会加倍算上悬赏值!
cov算出来的结果跟我手写的结果是不一样的。
而且平均值得到的是一个n维的向量,想要得到的是p维的啊
>> a=[1 2 3;2 5 6]
a =
1 2 3
2 5 6
>> b=mean(a)%%mean是按列求平均值,从b中的值可以看出
b =
1.5000 3.5000 4.5000
>> c=mean(a')%%所以要按行求平均值,直接转置求取,最后对c再求转置即可得到p维列向量
c =
2.0000 4.3333
%%%%%%%%%%%%%%%%%%%%%%%%%%
>> M=rand(4,3)
M =
0.9501 0.8913 0.8214
0.2311 0.7621 0.4447
0.6068 0.4565 0.6154
0.4860 0.0185 0.7919
>> m=cov(M)
m =
0.0892 0.0330 0.0405
0.0330 0.1505 -0.0186
0.0405 -0.0186 0.0305%%%%%%%%可以看出最后得到的协方差是3*3,由此知cov也是按列计算的,m对角线的元素是每列的方差,其余元素是列与列之间的协方差
>> n=cov(M')
n =
0.0042 -0.0061 -0.0006 -0.0110
-0.0061 0.0714 -0.0214 -0.0714
-0.0006 -0.0214 0.0080 0.0326
-0.0110 -0.0714 0.0326 0.1517%%转置后计算协方差,n为4*4,那么对角线元素就是行的方差,其余元素就是行与行之间的协方差。
%%%%%%%%%%%%%%%%%
关于cov计算的结果和手算的结果不同,这里的原因是:
matlab在计算相关矩阵时,把每一列的数作为一个随机变量的样本,每一行作为一个这几个随机变量的联合样本,即第i个随机变量取第k行的样本值时,第j个随机变量也取第k行的样本值。利用这个性质,我们就可以用协方差的公式代入来计算协方差矩阵了。
然而,由于矩阵中给出只是这些随机变量的样本,根据概率论的知识我们知道,由于我们不知道这些随机变量的概率分布(或联合概率分布),我们是不可能计算出这些随机变量的期望、方差或是协方差的,而只能计算出它们的一个无偏估计,即样本均值、样本方差与样本协方差。其计算公式如下所示:
matlab 中的cov等的统计函数的用法;假设X={xij}是一个p*n的矩阵,即...
-0.0110 -0.0714 0.0326 0.1517%%转置后计算协方差,n为4*4,那么对角线元素就是行的方差,其余元素就是行与行之间的协方差。关于cov计算的结果和手算的结果不同,这里的原因是:matlab在计算相关矩阵时,把每一列的数作为一个随机变量的样本,每一行作为一个这几个随机变量的联合样本...
matlab中random函数的用法
Y = randn(n),返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。Y = randn(m,n) 或 Y = randn([m n]),返回一个m*n的随机项矩阵。Y = randn(m,n,p,...) 或 Y = randn([m n p...]),产生随机数组(感觉就是三维数组,请看如下例子)。
Matlab,如何实现输入参数及输出参数的个数可变
function [m, n] = testhv3(x, varargin)函数时,会导致varargin由用户提供的第二个输入变量开始运行(第二个输入变量为varargin这个单元数组第一个元素)。varargout的情形与此类似。一个函数的输入变量和输出变量的个数是可变的。当varargin用做一个函数的输入变量时,MATLAB会将其置入一个单元数组中...
matlab 中想在一定分布的数据中随机采样N个数据,怎么做呢
比如,正态分布的概率密度normpdf,正态分布的分布函数normcdf,正态分布的逆分布函数求解函数为norminv。同样道理的还有possion分布,gamma分布,卡方分布,T分布,F分布,rayleigh分布等,加上后缀都是相应的概率密度函数,分布函数。二、统计编程:此文纯粹是转贴第4章 概率统计本章介绍MATLAB在概率统计中的若干命令和使用格式...
在散列表和排序后的列表中找一个元素,哪个查找速度最快? 最简洁的答案...
为什么呢?假设 p=1000 ,则哈希函数分类的标准实际上就变成了按照末三位数分类,这样最多1000类,冲突会很多。一般地说,如果 p 的约数越多,那么冲突的几率就越大。简单的证明:假设 p 是一个有较多约数的数,同时在数据中存在 q 满足 gcd(p,q)=d >1 ,即有 p=a*d , q=b*d, 则有 q mod p= q –...
matlab中zeros函数的用法是什么?
在MATLAB编程中,"zeros"函数发挥着创建零矩阵的关键作用。它主要有三种用法形式:1. 当你需要一个明确大小的零矩阵时,可以使用zeros(m, n); 这将生成一个m行n列的全零矩阵。例如,zeros(1,8)即为一个1行8列的零矩阵,这其实是zeros(8, 8)的简写,括号中的数字分别代表行数和列数。2. ...
MATLAB中poly函数的用法
MATLAB中的poly函数用于求以向量为解的方程或方阵的特征多项式,可直接传递多项式方程的系数矩阵进行使用,如poly([1 2 3])。1、poly([1 2 3])的举例。P=poly([1 2 3]) 可以解得P=[1 -6 11 -6],即求得的方程为:x^3-6*x^2+11*x-6=0。2、poly([1 2 3;4 5 6;7 8 0])...
matlab里面的sum和mean函数的用法?sum(x,3)是什么意思
sum(x,3)表示沿x的第3维求和。如果是一个四维的矩阵A,sum(A,3), mean(A,3)得到的最后的结果仍然是一个四维数组,但其第3维的长度为1.
matlab编程中的一些问题
就是说你把函数中的变量,不管是向量还是矩阵,直接放在返回值处就行。甚至 m=3;S=[1 5 9 4];你想二者都返回,那么function [m,S]=bgg(x,y,z,o,p),并且主函数这样[m,S]=bgg(x,y,z,o,p),接收就行了。4、方括号主要是把向量或矩阵的值罗列出来等功能,小括号一是表示运算优先级...
matlab中rand函数的用途。
matlab中rand函数的用途是:matlab rand函数能产[01]间随机数,由种子递推出来,而种子在程序初始时候都一样。例如和时间相关的随机数,如rand('state',sum(100*clock))。rand函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果在第一次调用rand()之前没有调用srand...