如何将二进制文件作为nx1数组导入R

时间:2019-02-13 16:14:59

标签: r matlab import

我正在尝试从MIT面部识别项目站点导入一些原始数据文件(未知文件类型)。每个文件都包含一个16384x1像素值的数组,用于一张128 * 128的人脸图像。

以下是包含数据的站点:

http://courses.media.mit.edu/2004fall/mas622j/04.projects/faces/

原始数据以未知的文件格式提供(我确实不确定某种.bin或.dat格式),并且应编码为16284X1数组。我尝试使用readBin()读取文件,这将导致4096x1数组(下面显示的代码,文件名“ 1227”)。此外,此数组的值具有很大的范围(最小值= -2139063177,最大值= 2139781749),这不允许它们成为image()的像素值。

data<-readBin("1227", "integer",n=128*128, endian = "big")

将endian更改为“ little”会导致长度为零的数组。我有一个朋友尝试在matlab中读取文件,并且他们成功完成了以下代码:

fid=fopen('rawdata/1223'); 
I = fread(fid);
imagesc(reshape(I, 128, 128)'); colormap(gray(256));

这些文件在我上面发布的链接上可用,但请告知我是否应该发布其中一个要读取的文件的内容。

1 个答案:

答案 0 :(得分:0)

数据似乎是一个字节数组,其编码为灰度值。您可以将数据读入R并使用

进行绘制
xx <- matrix(as.numeric(readBin("1223", "raw", 128*128)), ncol=128, byrow = TRUE)
plot(as.raster(xx, max=255))

这将返回

enter image description here

相关问题