Matlab矩阵太大导致运行崩溃,请问有小伙伴知道怎么解决吗?救救孩子吧🙏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab矩阵太大导致运行崩溃,请问有小伙伴知道怎么解决吗?救救孩子吧🙏相关的知识,希望对你有一定的参考价值。

参考技术A 不了解你的具体情况。一般有以下几种方案:
1. 无法load进matlab,那么考虑增加内存条,或者增加系统的虚拟内存(可以去查你电脑所用操作系统增加虚拟内存的方法)。
2. 如果矩阵可以load进matlab,且有很多的0,可以考虑用稀疏矩阵来节省空间:假设原矩阵为a,则可以用命令:b = sparse(a)。然后使用b矩阵进行运算即可。

使用 pca 崩溃 Matlab

【中文标题】使用 pca 崩溃 Matlab【英文标题】:Using pca Crashes Matlab 【发布时间】:2015-05-14 04:18:06 【问题描述】:

对于这个问题,我不明白为什么每次运行我的 pca 行时我的 MATLAB 都会崩溃。我在包含异常面的矩阵上使用 pca,如下所述:

pics.mat 包含 40 张图像的矩阵数据,每张图像的尺寸为 96*64 像素。 (一个96*64*40的矩阵)

我这部分的代码是:

%% problem 1a: finding average face
load('pics.mat'); % loads the file

% combines the 3d matrix into a 2d matrix
total = [pics(:, :, 1)]; 
for i = 2:40
    total = [total + pics(:, :, i)];
end

size(total) %96 by 64
A1 = total/40 % the average values divided by total # of faces for avg face


%% problem 1b: the anomalous face
Anom = [];

for i = 1:40
    Anom(:, :, i) = [pics(:, :, i) - A1]; % subtract the average face from all 40 images
end

我遇到的问题是,当我执行涉及在 b 部分的 40 个异常面孔上使用 pca 的这一部分时,我的 MATLAB 崩溃了。

我这部分的代码是:

%% problem 1c I: pca
Anom = reshape(Anom, [6144 40]); % reshapes a 3d into 2d

[eigenfaces,scores,sigma2] = pca(Anom', 'Centered' ,'off'); % this crashes MATLAB

为什么会崩溃?是因为我前面部分的代码,还是因为我在一台极度贫血的笔记本电脑上运行它?

【问题讨论】:

它是 64 位操作系统吗?如果没有,您可能需要在崩溃后立即检查 matlab.exe 的内存消耗 - 即使从任务管理器中也是如此。 很可能你有一台“弱”的计算机,代码对于 Matlab 来说太多了。 Matlab 通常不会因为代码中的错误而崩溃。 是的,我在 Windows 8 64 位上运行它。这可能是记忆;我在一个小得多的矩阵上尝试了 pca,它可以工作。 【参考方案1】:

我有一个类似的问题,维度使计算变得不堪重负。 This link of Cootes Active Shape Models,在附录 C 中,他将他的 D 转换为 T 以应对矩阵维数。

我希望它也适用于你的情况,因为它让我免于很多麻烦。

这就是我在 MatLab 中解决它的方法:

imvecs = 图像向量

meanval = 他们的平均值

size(imvecs,2) = 我的数据集中的图片数量(N)

function [T, D] = covarianceMatrix(imvecs, meanval)
    D = [];
    for i = 1:size(imvecs,2),
       diff = imvecsi - meanval;
       D = [D, diff];
    end
    %Dimensionality reduction
    T = (D' * D) ./ (size(imvecs,2));
return

T 现在是一个 NxN 大小的矩阵,希望它更容易计算而不会耗尽内存。

祝你好运!

【讨论】:

以上是关于Matlab矩阵太大导致运行崩溃,请问有小伙伴知道怎么解决吗?救救孩子吧🙏的主要内容,如果未能解决你的问题,请参考以下文章

使用 pca 崩溃 Matlab

请问在MATLAB中,如何计算含有未知数的矩阵?

请教高手!急!!! 请问如何将matlab中的矩阵数据转化为点云数据?

Matlab + Armadillo 和逆矩阵崩溃

使用 mex 将一个大矩阵从 Matlab 传递到 C:Matlab 崩溃

请问,怎么用matlab生成一个随机对称的矩阵