我是刚刚接触matlab的小白,在度娘和广大网友的帮助下终于完成了这个小任务。所以想记录下,也希望可以帮助那些学习matlab的人。 小任务:主要对txt文本里的数据 进行处理下,然后通过matlab画画直方图来表示。
fid=fopen('gatsby1280x512clip.rgb.txt'); //打开txt文件 我的txt里是100行1列的数据
temp=textscan(fid,'%u'); // 数据存储在细胞单元里
fclose(fid);
a=zeros(1,256); // 创建一个1到256 的数组
b=zeros(1,256);
c=zeros(1,256);
for i=1:100
for j=1:(1280*i)
red=temp{1,1}(2*j,1); //读取细胞单元中的数据
r_stat=abs(bitand(red,255));// 对数据处理 red&0xff 再取绝对值
a(r_stat+1)=a(r_stat+1)+1;
end
end
for i=1:100
for j=1:(1280*i)
green=temp{1,1}(2*j+1,1); //读取细胞单元中的数据
g_stat=abs(bitand(bitshift(red,-8),255)); // 对数据进行处理 右移八位 再与上0xff 然后取绝对值
b(g_stat+1)=b(g_stat+1)+1;
end
end
for i=1:100
for j=1:(1280*i)
blue=temp{1,1}(2*j+1,1);
b_stat=abs(bitand(blue,255));
c(b_stat+1)=c(b_stat+1)+1;
end
end
figure(2),bar(a); // 创建显示窗口
title('红色分量的灰度直方图')
xlabel('灰度值')
ylabel('出现个数')
figure(3),bar(b);
title('绿色分量的灰度直方图')
xlabel('灰度值')
ylabel('出现个数')
figure(4),bar(c);
title('蓝色分量的灰度直方图')
xlabel('灰度值')
ylabel('出现个数')