c++ - 如何将 C 输出文件读入 Matlab

标签 c++ c matlab file io

我在 C 中创建了一个 500x500 的矩阵,如果有人想看的话,它大约是 1MB --> (http://www.megafileupload.com/8mad/test)。我需要将它读入 Matlab,以便我可以使用 imagesc 将其可视化。它应该是一些数学生成的艺术品,我很好奇它是什么样子。

到目前为止我试过这个:

fid = fopen('test', 'r')
mydata = fread(fid, 'double')

但实际上并没有用。

另一方面,如果有人可以建议一种不同的方式来编写文件,使其对 Matlab 更友好,我们将不胜感激。

我的文件基本上包含一个具有 500x500 个元素的 integer 类型的矩阵。

这是我在 C 上的保存方式:

if(fwrite(img, sizeof(int), w*h, fp) != w*h)
    printf("File write error.");
    fclose(fp);

最佳答案

检查以下内容:

  1. 打开文件测试进行阅读。
  2. int32 类型的 500x500 元素读入矩阵 I
  3. 关闭文件。
  4. 转置矩阵 I - 因为 C 的二维数组是 row major ,而MATLAB矩阵是列专业的,你需要转置一个用C写的矩阵,然后用MATLAB读。
  5. 使用 imagesc 显示图像。

f = fopen('Test', 'r');
I = fread(f, [500, 500], 'int32');
fclose(f);
I = I';
imagesc(I);

enter image description here

关于c++ - 如何将 C 输出文件读入 Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42045610/

相关文章:

matlab - 表和分类数组、元胞数组和结构数组之间有什么区别?

c++ - 检查堆栈 C++ 中的最小值

c++ - 将抗锯齿图元绘制到位图 Allegro 5

c - 需要写函数的内容

c - 指针的指针作为函数参数

matlab - Fortran 90 中 do while 和 do while 之间的区别

c++ - 为什么我不能在 VC++ 2008 中编译这个非 CLR 程序?怎么做?

c++ - (F)莱克斯 : get text not matched by rules/get default output

c - 涉及for循环的fork函数

matlab - 用一个符号变量替换两个符号变量