gpt4 book ai didi

matlab - 是否可以只保存对称矩阵的一半来节省内存?

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:45 26 4
gpt4 key购买 nike

Ax=b 类型问题中使用了一个大矩阵。 A 是对称的。有什么算法可以让我们只保存矩阵的一半,然后在上面做x=A\b这样的操作吗?

最佳答案

您只会节省一半的内存,但您可以通过创建矩阵的平面版本,保存它,然后展开它来实现。请注意,所需的额外时间可能并不值得节省:

% pretend this is symettric...
A = rand(10, 10);

% store it as a flat list
flatA = [];
for k = 1:size(A,1)
flatA = [flatA; A([1:k],k)];
end

save('flatA.mat', 'flatA');

% undo
N = (-1 + (1+4*2*length(flatA))^0.5)/2;
newA = NaN(N,N);
cur = 1;
for k = 1:N
len = k;
newA(1:len, k) = flatA(cur:cur+len-1);
cur = cur + len;
end
% real A cannot have NaNs or this trick fails
newA(isnan(newA)) = newA(isnan(newA'))';

关于matlab - 是否可以只保存对称矩阵的一半来节省内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6261296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com