在 Matlab 中读取文本文件会导致字符中出现未知空格
Reading text file in Matlab results in unknown spaces within characters
我正在尝试读取 Matlab.The 文件中的 text/csv 文件,如下所示:
VolumeDisplacement,9783.47
CenterOfBuoyancy,-0.732585,3.16072e-14,-3.09939
WettedSurfaceArea,2709.66
WaterlineLength,102.156
MaximumWaterlineBeam,20.76
WaterPlaneArea,1774.4
CenterOfFloatation,-6.32016,1.00108e-11,0
文件是使用 Rhinoceros
中的 vbscript
生成的。我正在使用帮助文件中给出的标准方法,但是遇到了一个奇怪的问题。
filename = 'RhinoResult.txt';
fid = fopen(filename);
line = fgetl(fid);
tline = textscan(line,'%s%d','Delimiter',',');
VolumeDisplacement=tline{2};
但是,我的结果并不如预期。 tline
存储每个字符之间带有 space 的字符串。另外,开头还有两个未知字符(ÿþ)
。
tline{1} = 'ÿþV o l u m e D i s p l a c e m e n t '
用于创建文本文件的 VBScript 如下所示:
Sub writeResult(arrResults, filePath, fileName)
Dim objFSO,objFile
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(filePath & fileName, _
ForWriting, True)
objFile.Write "VolumeDisplacement," & arrResults(0)
objFile.Writeline
objFile.Write "CenterOfBuoyancy," & arrResults(1)
objFile.Writeline
objFile.Write "WettedSurfaceArea," & arrResults(2)
objFile.Writeline
objFile.Write "WaterlineLength," & arrResults(3)
objFile.Writeline
objFile.Write "MaximumWaterlineBeam," & arrResults(4)
objFile.Writeline
objFile.Write "WaterPlaneArea," & arrResults(5)
objFile.Writeline
objFile.Write "CenterOfFloatation," & arrResults(6)
objFile.Writeline
objFile.Close
End Sub
有人可以帮我解决这个问题吗?
谢谢,
阿弥陀佛
如果您查看 docs,您会看到
object.CreateTextFile(filename[, overwrite[, unicode]])
你的
Set objFile = objFSO.CreateTextFile(filePath & fileName, _
ForWriting, True)
(可能是从 .OpenTextFile 调用中错误复制的)欺骗 .CreateTextFile 使用 Unicode(证据:BOM,'spaces')。
因此正确使用 .CreateTextFile 来创建(并写入)ANSI 文件:
Set objFile = objFSO.CreateTextFile(filePath & fileName, True, False)
我正在尝试读取 Matlab.The 文件中的 text/csv 文件,如下所示:
VolumeDisplacement,9783.47
CenterOfBuoyancy,-0.732585,3.16072e-14,-3.09939
WettedSurfaceArea,2709.66
WaterlineLength,102.156
MaximumWaterlineBeam,20.76
WaterPlaneArea,1774.4
CenterOfFloatation,-6.32016,1.00108e-11,0
文件是使用 Rhinoceros
中的 vbscript
生成的。我正在使用帮助文件中给出的标准方法,但是遇到了一个奇怪的问题。
filename = 'RhinoResult.txt';
fid = fopen(filename);
line = fgetl(fid);
tline = textscan(line,'%s%d','Delimiter',',');
VolumeDisplacement=tline{2};
但是,我的结果并不如预期。 tline
存储每个字符之间带有 space 的字符串。另外,开头还有两个未知字符(ÿþ)
。
tline{1} = 'ÿþV o l u m e D i s p l a c e m e n t '
用于创建文本文件的 VBScript 如下所示:
Sub writeResult(arrResults, filePath, fileName)
Dim objFSO,objFile
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(filePath & fileName, _
ForWriting, True)
objFile.Write "VolumeDisplacement," & arrResults(0)
objFile.Writeline
objFile.Write "CenterOfBuoyancy," & arrResults(1)
objFile.Writeline
objFile.Write "WettedSurfaceArea," & arrResults(2)
objFile.Writeline
objFile.Write "WaterlineLength," & arrResults(3)
objFile.Writeline
objFile.Write "MaximumWaterlineBeam," & arrResults(4)
objFile.Writeline
objFile.Write "WaterPlaneArea," & arrResults(5)
objFile.Writeline
objFile.Write "CenterOfFloatation," & arrResults(6)
objFile.Writeline
objFile.Close
End Sub
有人可以帮我解决这个问题吗?
谢谢, 阿弥陀佛
如果您查看 docs,您会看到
object.CreateTextFile(filename[, overwrite[, unicode]])
你的
Set objFile = objFSO.CreateTextFile(filePath & fileName, _
ForWriting, True)
(可能是从 .OpenTextFile 调用中错误复制的)欺骗 .CreateTextFile 使用 Unicode(证据:BOM,'spaces')。
因此正确使用 .CreateTextFile 来创建(并写入)ANSI 文件:
Set objFile = objFSO.CreateTextFile(filePath & fileName, True, False)