Чтение текстового файла в 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)
Другие вопросы по тегам