如何将整数数组从 C 传输到 Matlab
How transfer an array of integers from C to Matlab
有没有一种简单的方法可以将整数数组从 C 程序传输到 matlab?我在网上找到了几个关于如何在 C++ 和 Matlab 之间进行操作的指南,但没有找到 C 到 Matlab 的指南。
我有几个由 1180 个浮点数组成的数组,它们是用 C 编写的程序生成的。现在我想在 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 中尝试的方法,但 none 给出了正确的结果。在所有情况下,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 程序传输到 matlab?我在网上找到了几个关于如何在 C++ 和 Matlab 之间进行操作的指南,但没有找到 C 到 Matlab 的指南。
我有几个由 1180 个浮点数组成的数组,它们是用 C 编写的程序生成的。现在我想在 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 中尝试的方法,但 none 给出了正确的结果。在所有情况下,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')