Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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_Std - Fatal编程技术网

matlab中计算标准差的几个问题

matlab中计算标准差的几个问题,matlab,std,Matlab,Std,我有一个巨大的稀疏矩阵,大小是700万乘1000。我想计算每列的标准偏差。如果我像stddata:,那样逐列执行,我会在每一列上循环,这很好 但如果我想马上做,stddata,它会冻结并崩溃 最有效的方法是什么?最有效的方法是使用matlabs std函数,在我的简单测试中,sizeA=[1e3,1e3],大约快10倍。缺点是,正如您所注意到的,必须将整个矩阵解析为函数。这需要内存,而您可能没有 正如路易斯·门多(Luis Mendo)在评论中所建议的那样,解决办法是在两者之间做点什么。也就是说

我有一个巨大的稀疏矩阵,大小是700万乘1000。我想计算每列的标准偏差。如果我像stddata:,那样逐列执行,我会在每一列上循环,这很好

但如果我想马上做,stddata,它会冻结并崩溃


最有效的方法是什么?

最有效的方法是使用matlabs std函数,在我的简单测试中,sizeA=[1e3,1e3],大约快10倍。缺点是,正如您所注意到的,必须将整个矩阵解析为函数。这需要内存,而您可能没有

正如路易斯·门多(Luis Mendo)在评论中所建议的那样,解决办法是在两者之间做点什么。也就是说,将矩阵划分为更大的块,然后将这些块解析为函数。e、 g

A = randn(1e3);
chunkSize = 100;
res = zeros(1,1e3);
for i = 1:length(A)/chunkSize;
    res((i-1)*chunkSize+1:i*chunkSize) = std(A((i-1)*chunkSize+1:i*chunkSize));
end

在两者之间做些事情:将矩阵分成垂直的块,宽度与计算机支持的宽度相同。对于每个区块,调用std,并在区块上循环。这样,您就不必循环这么多次,这是否意味着数据也会冻结?