【发布时间】:2014-10-19 17:44:23
【问题描述】:
我有一个单元格,Data,它包含三个 double 数组,
Data =
[74003x253 double] [8061x253 double] [7241x253 double]
我正在使用循环来读取这些数组并执行一些功能,
for ii = 1 : 3
D = Data {ii} ;
m = mean (D') ;
// rest of the code
end
收到mean 的警告并说:
考虑对 MEAN 使用不同的 DIMENSION 输入参数
但是当我把它改成,
for ii = 1 : 3
D = Data {ii}' ;
m = mean (D) ;
// rest of the code
end
我得到 内存不足错误。
比较两个代码,谁能解释一下会发生什么?
似乎我只使用 复共轭转置 得到错误(我的数据是真正有价值的)。
【问题讨论】:
-
Out of memory error发生在哪个迭代中?你能说出失败前
ii的值吗? -
@user502144,实际上,out of memory error 没有提到该行(我犯了一个错误,因为错误而提到它,我已更正)。但是,只需对这两个代码进行转置更改,我就可以消除错误。
-
对于一个
'与复数无关 - 它转置矩阵,这也意味着它需要制作副本(需要额外的内存)。我的猜测是,由于 Matlab 使用了一个非常先进的即时编译器,它可以识别第一种情况并正确地将其替换为mean(D,2)。 -
@bdecaf
'与转置.'不同。运算符'实际上是hermitian (complex) transpose。 -
@huntj,正如我所提到的,我的数据是真正有价值的。
标签: database matlab database-design signal-processing octave