用C读取MATLAB导出的矩阵 您所在的位置:网站首页 c语言导出文件 用C读取MATLAB导出的矩阵

用C读取MATLAB导出的矩阵

2022-12-28 10:02| 来源: 网络整理| 查看: 265

在MATLAB中导出可以用C读入的矩阵有很多方法,比如:

利用Code Generation将具体数值硬编码到源文件中保存为MAT文件后利用 matlabroot/extern/include/mat.h 中所定义函数读取利用photobuf等跨语言二进制协议导入导出

在硬编码数值方法中,具体数值以指数形式字符串形式保存,在矩阵维数较高时,C源文件代码能变得极大。

通过mat.h提供的工具函数,需要在编译时额外添加include路径。

跨语言二进制协议的C/C++、Java、Python实现一般实现较好,但MATLAB的实现一般已经非常陈旧。

本文介绍的方法是一种最原始、与平台无关的方法,利用MATLAB和C的原生/标准库函数完成整个流程。

在MATLAB中,我们依次写入矩阵的维度、各个维度大小,以及矩阵数据本身。

A = rand(3,5); fid = fopen('matrix_A.dat', 'w'); if fid == -1 error('Failed to open the file'); end fwrite(fid, ndims(A), 'uint16'); fwrite(fid, size(A), 'uint64'); fwrite(fid, A, 'double');

然后,我们在C中按对应的顺序,将矩阵数据放入相应变量。

#include #include #include int main(int argc, char *argv[]) { FILE *fp; fp = fopen("matrix_A.dat", "rb"); uint16_t ndims = 0; fread(&ndims, sizeof(uint16_t), 1, fp); uint64_t *size; size = (uint64_t *) malloc(ndims * sizeof(uint64_t)); uint64_t numel = 1; fread(&size, sizeof(uint64_t), ndims, fp); for (uint16_t i = 0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有