如何将整数数组从C转移到Matlab

问题描述 投票:0回答:1

是否有某种简单的方法将整数数组从C程序传输到matlab?我在网上找到了一些有关如何在C ++和Matlab之间进行操作的指南,但没有关于C到Matlab的指南。

我有几个用C编写的程序生成的1180个浮点数组。现在我想在Matlab中可视化此数据。我可以让C程序导出创建硬编码的数组所必需的Matlab代码,但这似乎不必要地令人反感。

我可以只使用C ++方法并使用C ++编译器来编译我的C程序,但现在我很好奇它是否也可以在C中完成。

Matlab可以导入.mat文件,但这些文件似乎已加密或为二进制格式。

请不要提供有关如何在C中可视化数据的建议,我必须在Matlab中进行处理。我在Matlab中有一段代码返回了奇怪的结果,我用C语言编写了等效的代码,现在我想看看结果是否有所不同。通过这种方式,我可以调试我的Matlab代码,因为最终结果必须在Matlab代码中上交。

到目前为止,我的C代码。另外,我在上载时犯了一个错误,我想传输一个整数数组。

FILE *f = fopen("Ps.bin", "wb");
for(int n = 1; n < N + 1; n++)
{
    converter.asInt = Ps[n];
    for(int i = 0; i < 4; i++)
    {
        fwrite(&converter.asBytes[i], sizeof(char), 1, f);
    }
}
fclose(f);

这是我在matlab中尝试过的方法,但是都没有给出正确的结果。在所有情况下,matlab都会生成一个双精度数组,我绝对不希望这样。它只生成一个值是以下三个值之一的数组:0、0.0000和4.925。

Ps = fread(fopen('Ps.bin'))
Ps = fread(fopen('Ps.bin'), 1180)
Ps = fread(fopen('Ps.bin'), 1180, 'uint32')
Ps = fread(fopen('Ps.bin'), 1180, '2 * uint16')
c arrays matlab transfer
1个回答
3
投票

用C编写一个二进制文件(使用fwrite,外观here)。在matlab中,您可以使用过程here([fread功能)

读取它
© www.soinside.com 2019 - 2024. All rights reserved.