📜  将矩阵从 excel 导入 matlab - C++ (1)

📅  最后修改于: 2023-12-03 14:53:54.232000             🧑  作者: Mango

将矩阵从 Excel 导入 Matlab/C++

在编写程序时,我们通常需要将数据从不同的来源导入到程序中。对于一些数据较小的情况,我们可以直接手动输入或使用代码生成。但是,当数据量比较大或者需要不断变换时,手动输入或代码生成的方式就不再适用,这时我们需要从其他来源导入数据。

Excel 是比较常见的数据来源之一,我们可以将 Excel 中的数据导入到 Matlab 或者 C++ 中进行处理。本文将介绍如何将 Excel 中的矩阵数据导入到 Matlab 和 C++ 中。

导入到 Matlab

我们可以使用 Matlab 中的 xlsread 函数来导入 Excel 中的数据。该函数的具体用法如下:

[num, txt, raw] = xlsread(filename, sheetname, range)

其中:

  • filename:Excel 文件名;
  • sheetname:Sheet 名称,如果没有则使用默认值;
  • range:数据所在范围,如 B2:D6

函数返回三个变量:

  • num:数值数组;
  • txt:文本数组;
  • raw:未处理的 Excel 数据数组。

因为我们要导入的是矩阵数据,所以可以仅使用第一个返回值。

下面是一个用 Matlab 导入 Excel 矩阵数据的例子。

filename = 'data.xlsx';  % 文件名
range = 'A1:C4';  % 数据范围
M = xlsread(filename, range);  % 导入数据

上述代码将从文件 data.xlsx 中导入 A1 到 C4 的数据,并将结果保存在变量 M 中。

导入到 C++

类似地,我们可以使用 C++ 中的第三方库来读取 Excel 中的数据。这里我们介绍使用 LibXL 库来读取 Excel 数据。

首先,需要从官网下载适合自己的版本并安装。然后,在代码中引入对应的头文件并连接对应的库文件即可。下面是一个例子。

#include <iostream>
#include "libxl.h"

using namespace std;
using namespace libxl;

int main()
{
    Book* book = xlCreateBook();  // 创建 Excel 对象
    book->load("data.xlsx");  // 读取 Excel 文件
    Sheet* sheet = book->getSheet(0);  // 获取第一个 Sheet
    int rows = sheet->lastRow() - sheet->firstRow() + 1;  // 行数
    int cols = sheet->lastCol() - sheet->firstCol() + 1;  // 列数
    double** matrix = new double*[rows];  // 数据
    for (int i = sheet->firstRow(); i <= sheet->lastRow(); ++i)
    {
        matrix[i - sheet->firstRow()] = new double[cols];
        for (int j = sheet->firstCol(); j <= sheet->lastCol(); ++j)
        {
            double value = sheet->readNum(i, j);  // 读取单元格数据
            matrix[i - sheet->firstRow()][j - sheet->firstCol()] = value;
        }
    }

    // 输出数据
    for (int i = 0; i < rows; ++i)
    {
        for (int j = 0; j < cols; ++j)
        {
            cout << matrix[i][j] << "\t";
        }
        cout << endl;
    }

    // 释放内存
    for (int i = 0; i < rows; ++i)
    {
        delete[] matrix[i];
    }
    delete[] matrix;
    xlClose(book);

    return 0;
}

上述代码中,我们首先创建了一个 Book 对象并加载了 Excel 文件。然后遍历每个单元格,将其值存储到一个二维数组 matrix 中,并输出结果。最后需要释放内存并关闭 Excel 对象。

以上就是如何将 Excel 中的矩阵数据导入到 Matlab 和 C++ 中的方法。希望对大家有所帮助。