gpt4 book ai didi

matlab - 在 matlab 中可视化一个大矩阵

转载 作者:行者123 更新时间:2023-12-02 04:37:02 28 4
gpt4 key购买 nike

我有一个巨大的稀疏矩阵 (1,000 x 1,000,000),我无法在 matlab 上加载(内存不足)。

我想可视化这个矩阵,以了解它的稀疏性和值的差异。

由于内存限制,我想进行如下操作:

1-将矩阵分成4个矩阵

2- 在 matlab 上加载每个矩阵并将其可视化,以便颜色给出值的概念(尤其是零值)

3-“粘贴”我将获得的 4 张图像,以便对原始矩阵有一个全局的想法

(i) 是否可以在 matlab 中加载“矩阵的一部分”?

(ii) 对于可视化工具,I read about spy (和 daspect)。但是,此功能只能使非零值的比例无关地可视化。有没有办法添加颜色代码?

(iii) 我怎样才能“粘贴”地 block 来制作地 block ?

最佳答案

如果您的矩阵是稀疏的,那么当前存储它的方法(作为文本文件中的完整矩阵)似乎效率很低,并且肯定会很难将其加载到 MATLAB 中。不过我怀疑只要足够稀疏,还是可以作为稀疏矩阵导入MATLAB的。

这样做的传统方法是一次加载所有内容,然后转换为稀疏表示。但是,在您的情况下,一次读入文本文件并即时转换为 MATLAB 稀疏矩阵是有意义的。

您可以通过估计矩阵的稀疏性来确定这是否可行,并使用它来查看整个矩阵是否可以作为稀疏矩阵加载到 MATLAB 的内存中。

尝试类似的东西:(未经测试的代码!)

% initialise sparse matrix
sparse_matrix = sparse(num_rows, num_cols);
row_num = 1;

fid = fopen(filename);

% read each line of text file in turn
while ~feof(fid)
this_line = fscanf(fid, '%f');

% add row to sparse matrix (note transpose, which I think is required)
sparse_matrix(row_num, :) = this_line';
row_num = row_num + 1;
end
fclose(fid)

% visualise using spy
spy(sparse_matrix)

可视化

关于可视化:通过像 imagesc 这样的工具可视化这样的稀疏矩阵是可能的,但我相信它可能会在内部创建完整的矩阵——也许有人可以确认这是不是真的.如果是这样,那么它将导致您出现内存问题。

spy 真正做的是在 2D 中绘制非零元素的位置。您可以相当轻松地编写自己的 spy 函数,它可以根据每个位置的值具有不同颜色或大小的点。参见 this answer举一些例子。


保存稀疏矩阵

正如我上面所说,保存矩阵的方法非常低效——对于稀疏度为 10% 的矩阵,大约 95% 的文本文件将是零或空格。我不知道这些数据是从哪里来的,但是如果您可以控制它的创建(例如,它来自您编写的另一个程序),那么只保存格式中的非零元素会更有意义 row_idx, col_idx, value.

然后您可以使用 spconvert直接导入稀疏矩阵。

关于matlab - 在 matlab 中可视化一个大矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21752275/

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