Чтение текстового файла в Matlab приводит к появлению неизвестных пробелов в символах
Я пытаюсь прочитать текстовый / CSV-файл в Matlab. Файл выглядит так:
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
Файл создан с использованием vbscript
в Rhinoceros
, Я использую стандартный метод, указанный в файле справки, но столкнулся со странной проблемой.
filename = 'RhinoResult.txt';
fid = fopen(filename);
line = fgetl(fid);
tline = textscan(line,'%s%d','Delimiter',',');
VolumeDisplacement=tline{2};
Но мои результаты не такие, как ожидалось. tline
хранит строки с пробелом между каждым символом. Также есть два неизвестных персонажа (ÿþ)
в начале.
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
Может кто-то помочь мне с этим?
Спасибо, Амитава
1 ответ
Если вы посмотрите на документы, вы увидите
object.CreateTextFile(filename[, overwrite[, unicode]])
Ваш
Set objFile = objFSO.CreateTextFile(filePath & fileName, _
ForWriting, True)
(вероятно, неправильно скопировано из вызова.OpenTextFile) обманывает.CreateTextFile в использовании Unicode (свидетельство: спецификация, "пробелы").
Поэтому используйте.CreateTextFile правильно, чтобы создать (и записать) файл ANSI:
Set objFile = objFSO.CreateTextFile(filePath & fileName, True, False)