matlab中的矩阵图像

matlab中的矩阵图像,matlab,matrix,Matlab,Matrix,我已经编写了一个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});

我已经编写了一个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_u”开头,在a{i}中,我有一个10x10矩阵的矩阵。现在我想把a{I}矩阵表示为一个图像或图形或任何东西,但要有一个能以不同颜色显示矩阵内容的东西。感谢您的帮助。

您正在寻找
imagesc
功能

但是您需要在之前使用
str2num
,因为您将数字作为字符读取

i、 e:

如果要直接以数字形式读取文件,应执行以下操作:

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

如果文件中的数据是结构化的,则表示数字之间有制表符或空格,您可以直接使用
importdata
将数据加载到矩阵中。之后,您可以使用
imagesc
生成图像。要分配颜色,可以使用
colormap
功能更改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;

希望有帮助

谢谢你的回复,但是当我尝试使用imagesc函数时出现了一个错误!谢谢你的回复。我可以得到输出,但有一个问题,你看。矩阵的内容类似于{i}={0102012;0011020;1222210….},当我使用imagesc时,我会看到一条不同颜色的条纹。我只想看到不同颜色的矩阵内容。似乎
fileread
给了你一个单元格数组。你试过了吗?嗨!我试过用fscanf加载和fopen,但我得到的矩阵不是数字,而是指数项,而不是fileread。我不知道为什么会这样。这可能是因为你的矩阵中有非常大或非常小的数字。这真的不是问题。这只是数字的表示,我想我可以按照你提到的顺序来建模,得到正确的结果。谢谢,我只是对您使用的cmap矩阵的用途感到困惑。我使用cmap矩阵强制只使用3种颜色,因为您提到您的数据中只有0、1和2的值。有关更多信息,请参阅。即使不使用我选择使用的3x3矩阵,上面的代码也可以工作。事实上,我建议您自己在上面的代码中使用
colormap('jet')
% 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;