MatLab doesn't read my .TXT file correct

69 ビュー (過去 30 日間)
Peter Bu
Peter Bu 2018 年 7 月 20 日
コメント済み: Noam Greenboim 2020 年 5 月 21 日
Hello everyone,
i have an issue where my .TXT file is not readable my MatLab. I am not sure what to do. Can somebody please give me a hint? I can open it with other tools like "Atom".
Thanks in advance!
  2 件のコメント
Jeremy Hughes
Jeremy Hughes 2018 年 7 月 20 日
It would help to see the actual file. My suspicion is that the file is encoded with something MATLAB doesn't expect, like UTF-16.
Peter Bu
Peter Bu 2018 年 7 月 20 日
Oh yes. I missed to attach the file. Here it is :-)

サインインしてコメントする。

採用された回答

Jeremy Hughes
Jeremy Hughes 2018 年 7 月 20 日
Thanks for uploading the file!
The first issue I see is that the file has a UTF-16 byte-order-mark. The file is stored as UTF-16 which isn't fully supported in MATLAB. This is why you see the extra boxes between each of the characters.
I did the following to check that your file even needed to be UTF-16--it doesn't.
fid = fopen('Charge4_Probe_3.txt','r','n')
bytes = fread(fid)';
fclose(fid);
bytes(1:20) % inspect a few of the bytes, you can see what's going on
bytes(1:2) = []; % remove the byte order mark
any(bytes(2:2:end) ~= 0) % every other byte is NULL
So none of the characters are using the second byte--effectively this is an ascii file. I'd look into the source of the file and see if you can get it as utf-8 (that will half the file size)
To get a new file, you can write as follows:
asciibytes = bytes(1:2:end) % strip out the zero bytes
fid = fopen('Charge4_Probe_3_ascii.txt','w','n','UTF-8');
fwrite(fid,asciibytes);
fclose(fid);
This is now ready to be read. (Note: as Aquatris mentions, these are using a decimal separator of comma.)
To read this programatically, you can do this:
opts = detectImportOptions('Charge4_Probe_3_ascii.txt','Delimiter','\t');
opts.DataLines = [4,inf];
opts = setvartype(opts,'double');
opts = setvaropts(opts,'DecimalSeparator',',');
T = readtable('Charge4_Probe_3_ascii.txt',opts);
head(T)
Hope this helps,
Jeremy
  2 件のコメント
Peter Bu
Peter Bu 2018 年 7 月 20 日
Thanks a lot for your time and the detailed answer!
Noam Greenboim
Noam Greenboim 2020 年 5 月 21 日
Here is an easy way to tell the encoding of your file:
Usage:
FileEncoding = BOM('Charge4_Probe_3.txt')
This uses the same idea as described above.

サインインしてコメントする。

その他の回答 (1 件)

Aquatris
Aquatris 2018 年 7 月 20 日
Your data has comma (,) in them. I do not think Matlab can read values with commas, i.e., 2,230. You should change those commas to dots as in answered in another question in this forum .
  2 件のコメント
Aquatris
Aquatris 2018 年 7 月 20 日
編集済み: Aquatris 2018 年 7 月 20 日
Also, I used Matlabs "import data" functionality and it was able to read the data correctly, just the variables with commas were NaN instead.
Peter Bu
Peter Bu 2018 年 7 月 20 日
also thank you for your time and answer :-)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLarge Files and Big Data についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by