MATLAB中如进行巨大矩阵计算,如A=rand(dim),其中dim为千万级的数?
发布网友
发布时间:2024-10-19 10:43
我来回答
共1个回答
热心网友
时间:2024-12-02 03:54
也许你应该多了解一点计算机知识。
通俗的说,设计大量数据的简单优化思路是两种,一种是以空间换时间,一种是以时间换空间。
像使用matlab做矩阵相关的计算,它是先把所有数据都传到内存里,然后再直接从内存里取数据计算,这样的优点是比较省时间,但缺点是比较占内存。尤其是当数据比较大,而windows系统的内存普遍比较小时,当然就会出现内存不足计算不下去的情况。如果你执意使用这种方法,那你只能放弃PC去一个高级一点的服务器或者大型机上运行。
或者,放弃这种全读进来再计算的方法。使用一个编译型语言(如Fortran、C++、Pascal)逐项逐步计算矩阵。这样可能比较费时,但只要算法合理就不会太占内存。切忌,鱼和熊掌不可兼得,而且这个世界上也没有什么问题是必须要你把数据全都塞到内存里才能计算的,总有其他方法可以解决。