情况是这样的:我使用Matlab读取光谱仪创建的文件。为此,我使用以下简单代码:
id=fopen(filename, 'r', 'l');
[realimag, ~] = fread(id, 'int32');
fclose(id);
我遇到的问题是,现在我有第二个光谱仪,它可以生成需要使用 fread 函数中的"double"读取的文件。所以我每次都必须更改代码...有没有办法知道数据类型是什么,这样我就不必每次都更改代码?
提前谢谢。
fread
是读取文件,将它们解释为二进制文件,即作为位序列。因此,您可以读取二进制数据流并随心所欲地解释它,除非有人告诉您如何读取它,否则您无法知道如何读取它。
尝试使用这些命令从包含以下内容的文件读取
àéèìòù
它会起作用,你会得到
>> realimag
realimag =
-320280096
168491506
这根本没有意义。
如果你读它
[realimag, ~] = fread(id, 'char');
然后你会得到
realimag =
224
233
232
236
242
249
10
10
你猜怎么着?
>> int32('àéèìòù')
ans =
1×6 int32 row vector
224 233 232 236 242 249
那么,这两个十是什么呢?井
>> char(10)
ans =
'
'
新行。
这只是说,当您读取二进制文件时,您可以选择如何读取它。
显然,如果有人告诉你前n个字节包含一个字符串,告诉你如何读取文件的其余部分,那么情况就不同了。但是,同样,你必须知道,或者有人必须告诉你。