Octave GNU倍频程:使用textscan(…)读取NA值的数据
我需要从一个ASCII文件中读取数据,其中缺少的值被指定为NA。使用textscan(…)似乎不起作用,因为textscan(…)似乎会在第一次出现NA时停止读取/解析 下面是这个问题的简单演示:Octave GNU倍频程:使用textscan(…)读取NA值的数据,octave,textscan,Octave,Textscan,我需要从一个ASCII文件中读取数据,其中缺少的值被指定为NA。使用textscan(…)似乎不起作用,因为textscan(…)似乎会在第一次出现NA时停止读取/解析 下面是这个问题的简单演示: x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%d %d %d' , 'Delimiter' , ';' , 'ReturnOnError' , false ) error: textscan: Read error in field 2 of row 2 我还
x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%d %d %d' , 'Delimiter' , ';' , 'ReturnOnError' , false )
error: textscan: Read error in field 2 of row 2
我还尝试告诉textscan(…)将NA解释为“空值”,但没有成功:
x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%d %d %d' , 'Delimiter' , ';' , 'TreatAsEmpty' , 'NA' , 'ReturnOnError' , false )
error: textscan: Read error in field 2 of row 2
有人能解释一下发生了什么事,或者怎么做吗
请注意,这只是一个简单的例子来说明这个问题。我的文件中的数据格式有点复杂,我真的依靠textscan(…)来解析它;我认为如果没有文本扫描(…),我很难做到这一点
(我正在运行Octave 4.2.1。)
NA
是为浮点数定义的,因此您应该使用'%f'
转换说明符,而不是'%d'
x = textscan ( "1 ; 2 ; 3\n4 ; NA ; 6" , '%f %f %f' ,
'Delimiter' , ';' , 'ReturnOnError' , false )
但这与MATLAB不一致。:/在MATLAB和倍频程下进行测试。SardarUsama以八度音阶工作。@SardarUsama谢谢,我认为应该使用
NaN
而不是NA
你能测试它吗?@SardarUsama如果使用%d
,NA将转换为0
而不是NaN
。在MATLAB中,问题是由\n
引起的。看这里:和