gpt4 book ai didi

c - 将 3D Matlab 矩阵作为 1D 写入文件并用 C 读回

转载 作者:行者123 更新时间:2023-11-30 14:55:37 25 4
gpt4 key购买 nike

我有一个三维 Matlab 矩阵,形状为 3x4x5 。现在我想将此矩阵写入一维 .txt 文件并在 C 中将其读回。

但是,写入的数字应首先是 x 和 y 维度(因此 4x5),然后是 z 维度 (3)。

填充矩阵的示例代码:

duneven = 1:3*4*5
duneven = reshape(duneven,[3 4 5]);

我希望通过像这样排列矩阵来获得这种效果:

duneven = permute(duneven,[3 1 2]);

像这样写出来:

fp = fopen('testuneven.txt','w');
fprintf(fp,'%f ',duneven);
fclose(fp);

但是,用 C 语言读取它 - 像这样:

FILE* fp;
fp = fopen("testuneven.txt","r");

for(int i = 0; i < 3*4*5;i++){
float var;
fscanf(fp,"%f ",&var);
printf("%f ",var);
}
fclose(fp);

在 Matlab 中读出它会给出相同的输出。此外,在 shell 中 cat-out 该文件会返回相同的结果。所以问题出在Matlab代码上

不返回所需的输出。相反,它打印出第一列。我该如何解决这个问题?

最佳答案

我猜你混淆了 permute() 调用中的顺序。您对所需维度顺序统计数据的初始描述为 4x5,然后是 3

你的代码

duneven = 1:3*4*5
duneven = reshape(duneven,[3 4 5]);
duneven = permute(duneven,[3 1 2])

产生 5x3x4。

考虑使用duneven = permute(duneven,[2 3 1])

关于c - 将 3D Matlab 矩阵作为 1D 写入文件并用 C 读回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45694109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com