C++使用 matio读写 .mat文件

资料来自网页:http://www.cnblogs.com/muffled/p/3789162.html

读取matioTest.zip中s.mat文件,数据为普通matrix , 注意释放内存

#include <iostream>
#include <cassert>
#include <matio.h>

int main()
{
    mat_t *matfp;
    const char* matFilePath = "testRes\\s.mat";
    matfp = Mat_Open(matFilePath, MAT_ACC_RDONLY);
    if (NULL == matfp) {
        fprintf(stderr, "Error opening MAT file %s\n", matFilePath);
        return EXIT_FAILURE;
    }
    matvar_t* matVar = NULL;
    // read data 'x'
    matVar = Mat_VarRead(matfp, "x");
    if (matVar) {
        assert(matVar->data_type == MAT_T_DOUBLE);
        size_t xSize = matVar->nbytes / matVar->data_size;
        const double* xData = static_cast<const double*>(matVar->data);
        for (int i = 0; i < xSize; ++i) {
            std::cout << xData[i] << " ";
        }
        std::cout << std::endl;
        for (int i = 0; i < matVar->rank; ++i) {
            std::cout << matVar->dims[i] << " ";
        }
        std::cout << std::endl;
    }
    // read data 'y'
    matVar = Mat_VarRead(matfp, "y");
    if (matVar) {
        assert(matVar->data_type == MAT_T_DOUBLE);
        size_t ySize = matVar->nbytes / matVar->data_size;
        const double* yData = static_cast<const double*>(matVar->data);
        for (int i = 0; i < ySize; ++i) {
            std::cout << yData[i] << " ";
        }
        std::cout << std::endl;
        for (int i = 0; i < matVar->rank; ++i) {
            std::cout << matVar->dims[i] << " ";
        }
        std::cout << std::endl;
    }
    // read 'minX' and 'step' is similar
    Mat_VarFree(matVar);    // note the memory management??
    Mat_Close(matfp);

    system("pause");
    return EXIT_SUCCESS;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值