【发布时间】:2016-12-18 22:29:20
【问题描述】:
我正在尝试了解如何在 matlab 中读取和写入多种类型,但我真的不知道我哪里出错了。
例如,假设我想将一个字符串和一个双精度值写入二进制文件。
my_string='hello world';
my_double=4.45;
fid=fopen('test.bin','wb');
fwrite(fid,my_string,'char');
fwrite(fid,my_double,'double');
fclose(fid);
现在我想读回那个字符串并加倍。我看到的第一个方法是有人建议将整个文件加载到一个字节数组中并一次读取块。然而,这样做并没有给我任何帮助。
fid=fopen('test.bin','rb');
my_data=fread(fid);
my_data=[]
my_data 只是一个空白数组。
我尝试的另一件事是读取具有大小的数据。
my_data=fread(fid2,size(my_string),'char')
my_data=[]
这也给了我一个空白数组。即使将其作为整数读入也行不通。
那么我怎样才能编写混合类型以便稍后回读呢?
【问题讨论】:
-
可能只是一个错字,但在您最后的
fread声明中,您正在阅读fid2而不是fid...您可能想检查一下。 -
顺便说一句,您的示例中的
my_data=[]行是您的代码的实际部分还是只是您显示输出的方式?如果它是您的代码的一部分,那是您的问题,您将一个空数组分配给my_data,在读取文件数据后覆盖所包含的任何变量。