c言語でmatファイルを読み込むには

C言語のMatIOというオープンソースライブラリを使ってMATファイルを読み取ることができます。

MATファイルからデータをよみこむにはMatIOライブラリを使いましょう。以下にサンプルコードを示します。

#include <stdio.h>
#include <stdlib.h>
#include <matio.h>

int main() {
    // 打开MAT文件
    mat_t *matfile = Mat_Open("example.mat", MAT_ACC_RDONLY);
    if (matfile == NULL) {
        printf("无法打开MAT文件\n");
        return 1;
    }
    
    // 获取变量列表
    matvar_t *matvar;
    while ((matvar = Mat_VarReadNext(matfile)) != NULL) {
        // 输出变量名
        printf("变量名: %s\n", matvar->name);
        
        // 如果是数值数据
        if (matvar->data_type == MAT_T_DOUBLE) {
            // 获取数据维度
            int num_dims = matvar->rank;
            size_t *dims = matvar->dims;
            
            // 输出数据维度
            printf("维度: ");
            for (int i = 0; i < num_dims; i++) {
                printf("%lu ", dims[i]);
            }
            printf("\n");
            
            // 读取数据
            double *data = (double *)matvar->data;
            
            // 输出部分数据
            int num_elements = matvar->nbytes / matvar->data_size;
            int max_elements = 10;
            if (num_elements < max_elements) {
                max_elements = num_elements;
            }
            printf("数据: ");
            for (int i = 0; i < max_elements; i++) {
                printf("%f ", data[i]);
            }
            printf("\n");
        }
        
        // 释放变量
        Mat_VarFree(matvar);
    }
    
    // 关闭MAT文件
    Mat_Close(matfile);
    
    return 0;
}

このコードは、まずMATファイル(example.mat)を開き、MATファイル内の各変数について反復処理を行います。数値変数の場合は、変数の名前、次元、および一部のデータを出力します。最後に、MATファイルは閉じられます。

MatIOライブラリを先にインストールしてコンパイル時にリンクする必要があることに注意してください。 Linuxでは、以下のコマンドでインストールできます。

sudo apt-get install libmatio-dev

次に、上記のコードをコンパイルするには、次のコマンドを使用します。

gcc -o read_mat_file read_mat_file.c -lmatio

これにより実行可能ファイル read_mat_file が生成され、それを使用して MAT ファイル内のデータを読み取ることができます。

bannerAds