【问题标题】:images from matrix in matlabmatlab中矩阵的图像
【发布时间】:2013-01-15 22:06:10
【问题描述】:

我编写了一个 matlab 代码,它将加载写入文本文件中的矩阵,然后我想将其显示为图像。文本文件以随机方式包含从 0 到 2 的整数,我想用不同的颜色表示每个整数,例如0 为白色,1 为某种颜色,2 为不同的颜色。我会在下面提供matlab代码:

clc;
clear all;

for i=1:10
 k=num2str(i);
 f = strcat('test_file_num_',k,'.txt');
 a{i} = fileread(f);

 [m,n] = size(a{i});

 a{i} = reshape(a{i},12,10);
 a{i} = a{i}';
 a{i} = a{i}(:,1:10);

end

文件夹中有 10 个文本文件,每个文件都包含一个包含整数 0 到 2 的随机矩阵,每个文本文件的名称以“test_file_num_”开头,在{i}中我有一个 10x10 矩阵的矩阵。现在我想将 a{i} 矩阵表示为图像或图形或其他任何东西,但要拥有可以以不同颜色显示矩阵内容的东西。感谢您的所有帮助。

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    如果您文件中的数据是结构化的,则意味着数字之间有制表符或空格,您可以直接使用importdata 将数据加载到矩阵中。之后,您可以使用imagesc 生成图像。要分配颜色,您可以使用 colormap 函数更改颜色图。所以你的代码看起来像这样:

    % Example data
    A = floor(3*rand(10)); 
    % Change colormap with just 3 colors (Red,Green,Blue)
    cmap = [1 0 0;0 1 0;0 0 1];
    figure; imagesc(A); colormap(cmap); colorbar;
    

    希望有帮助!

    【讨论】:

    • 我想我可以按照你提到的顺序建模我的东西并得到正确的结果。谢谢
    • 我只是对您使用的 cmap 矩阵的用途感到困惑。
    • 我使用 cmap 矩阵强制仅使用 3 种颜色,因为您提到您的数据中只有 0,1 和 2 的值。请参阅link 了解更多信息。即使不使用我选择使用的 3x3 矩阵,上面的代码也可以工作。其实我建议你自己试试,在上面的代码中使用colormap('jet')
    【解决方案2】:

    您正在寻找imagesc 函数。

    但您需要先使用str2num,因为您将数字读取为字符。

    即:

    imagesc(str2num(a{i});
    

    如果您想立即以数字形式读取文件,您应该这样做:

    fid = fopen(f);
    a{i} = fscanf(fid,'%u',inf);
    fclose(fid);
    

    【讨论】:

    • 感谢您的回复,但我在尝试使用 imagesc 功能时出现错误
    • 嗨!感谢您的回复。我能够获得输出,但是您看到了问题。矩阵的内容类似于 a{i }= {0102012;0011020;1222210.....} 当我使用 imagesc 时,我看到一条不同颜色的条带。我只想看到不同颜色的每个矩阵内容。
    • 看来fileread 正在给你一个单元格数组。你试过load吗?
    • 嗨!我已经尝试使用 fscanf 加载和 fopen,但我得到的矩阵不是数量,而是指数项,我没有得到文件读取。我不知道为什么会这样
    • 这可能是因为您的矩阵中的数字非常大或非常小。这真的不是问题。这只是数字的表示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多