在 MATLAB 中过滤大矩阵中的数据
Filter data in a big matrix in MATLAB
在 MATLAB 中,我正在处理大小为 [200K*150K] 的矩阵 URm,其元素在 [0-5] 之间。
我想过滤值,以便我可以访问值为 [4-5] 和 [1-2] 的矩阵条目。我在第一种情况下成功了,但在尝试使用第二种情况时遇到错误。
Upos = sparse(URm > 3) ;
Uneg = sparse(URm<3 & URm>0) ;
我可以获取Upos
,但是对于Uneg
,我遇到以下错误:
Error using <
Requested 30711160620x1 (228.8GB) array exceeds maximum array size preference. Creation
of arrays greater than this limit may take a long time and cause MATLAB to become
unresponsive. See array size limit or preference panel for more information.
Error in Provide_Information_about_URm (line 14)
Uneg = sparse(URm<3 & URm>0)
错误更可能是由于 MATLAB 在应用 & 操作之前生成了一个内部矩阵,这需要大量 space。你认为如何解决这个问题?提前感谢您的意见。
您的表达式 URm<3
对几个值都是正确的,包括 URm
的所有零,这可能几乎是每个元素。这会产生一个非常大的稀疏矩阵,其中只有很少的非零元素。
而是以一种你永远不会 select 零
的方式重写逻辑
Uneg=xor(URm>=3,URm>0)
在 MATLAB 中,我正在处理大小为 [200K*150K] 的矩阵 URm,其元素在 [0-5] 之间。
我想过滤值,以便我可以访问值为 [4-5] 和 [1-2] 的矩阵条目。我在第一种情况下成功了,但在尝试使用第二种情况时遇到错误。
Upos = sparse(URm > 3) ;
Uneg = sparse(URm<3 & URm>0) ;
我可以获取Upos
,但是对于Uneg
,我遇到以下错误:
Error using <
Requested 30711160620x1 (228.8GB) array exceeds maximum array size preference. Creation
of arrays greater than this limit may take a long time and cause MATLAB to become
unresponsive. See array size limit or preference panel for more information.
Error in Provide_Information_about_URm (line 14)
Uneg = sparse(URm<3 & URm>0)
错误更可能是由于 MATLAB 在应用 & 操作之前生成了一个内部矩阵,这需要大量 space。你认为如何解决这个问题?提前感谢您的意见。
您的表达式 URm<3
对几个值都是正确的,包括 URm
的所有零,这可能几乎是每个元素。这会产生一个非常大的稀疏矩阵,其中只有很少的非零元素。
而是以一种你永远不会 select 零
的方式重写逻辑Uneg=xor(URm>=3,URm>0)