フィルターのクリア

How to read alphanumer​ic(alphabe​tic+numeri​c) columns to MatLab?

6 ビュー (過去 30 日間)
Chathu
Chathu 2015 年 1 月 12 日
コメント済み: Chathu 2015 年 1 月 14 日
I want to read data from a 'txt' file to MatLab. Please note that 3 columns of this 'txt' file consist of numerical values and the remaining column is an alphanumeric column (eg: 01f500000309, 01f50000030a ). I want to extract all those 4 columns to MatLab with their headers. I tried tblread,tblwrite but none of them worked. Any suggestions?
  1 件のコメント
Stephen23
Stephen23 2015 年 1 月 14 日
Your comments to Per Isakson's answer indicate that it really would be simpler if you uploaded the data file, or a shortened version of it, so that we can try it for ourselves. Please make a comment here (to your question), with an upload of the data file.

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

採用された回答

per isakson
per isakson 2015 年 1 月 12 日
編集済み: per isakson 2015 年 1 月 14 日
Try textscan
fid = fopen( 'cssm.txt' );
cac = textscan( fid, '%f%f%s' ...
, 'CollectOutput', true ...
, 'Delimiter' , ',' );
[~] = fclose( fid );
where cssm.txt contains
1, 2, 01f500000309
3, 4, 01f50000030a
&nbsp
>> cac{:}
ans =
1 2
3 4
ans =
'01f500000309'
'01f50000030a '
&nbsp
&nbsp
Addendum
fid = fopen( 'cssm.txt' );
hdr = textscan( fid, '%s%s%s%s', 1 ...
, 'CollectOutput', true ...
, 'Delimiter' , ',' );
cac = textscan( fid, '%f%f%f%s' ...
, 'CollectOutput', true ...
, 'Delimiter' , ',' );
[~] = fclose( fid );
hdr{:}
cac{:}
outputs
ans =
'Num1' 'Num2' 'Num3' 'Char1 '
ans =
17 1 2
18 3 4
ans =
'01f500000309'
'01f50000030a'
where cssm.txt contains
Num1,Num2,Num3,Char1
17, 1, 2, 01f500000309
18, 3, 4, 01f50000030a
&nbsp
Second addendum
>> importdata cssm.txt
ans =
'Num1 Num2 Char1 ABCDEFGHIJK ABCDEFGH ABCDEF ABCDEFGH '
'1 2 xxxxxxxxxxxx 192.168.20.2 UDP 60 01f600000234'
'3 4 yyyyyyyyyyyy 192.168.20.2 UDP 60 01f600000234'
The script below outputs
ans =
'ABCDEFGHIJK' 'ABCDEFGH' 'ABCDEF' 'ABCDEFGH'
ans =
'192.168.20.2' 'UDP'
'192.168.20.2' 'UDP'
ans =
60
60
ans =
'01f600000234'
'01f600000234'
>>
fid = fopen( 'cssm.txt' );
hdr = textscan( fid,'%*s%*s%*s%s%s%s%s', 1 ...
, 'CollectOutput', true );
cac = textscan( fid,'%*s%*s%*s%s%s%f%s', inf ...
, 'CollectOutput', true );
[~] = fclose( fid );
hdr{:}
cac{:}
where cssm.txt contains
Num1 Num2 Char1 ABCDEFGHIJK ABCDEFGH ABCDEF ABCDEFGH
1 2 xxxxxxxxxxxx 192.168.20.2 UDP 60 01f600000234
3 4 yyyyyyyyyyyy 192.168.20.2 UDP 60 01f600000234
  6 件のコメント
per isakson
per isakson 2015 年 1 月 14 日
編集済み: per isakson 2015 年 1 月 14 日
@Chathu, Still confused about what you have and what you want, I have added another example based on your recent comment. That should be enough for you to solve your problem with the help of the documentation on textscan. If you have the Stat Toolbox you might want to look at dataset
Chathu
Chathu 2015 年 1 月 14 日
@Stephen- got your point. Thanks for your reply.
@per isakson- thank you so much for your responses. Really admire your continuous support. Actually, my data set is huge. I would have emailed you the data set rather than elaborating it. I really apologize for confusing you.
"textscan" (as mentioned in the 2nd addendum ) worked quite closer to my interest. Thanks a million for your guidance.

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

その他の回答 (1 件)

Image Analyst
Image Analyst 2015 年 1 月 12 日
Try readtable() if you have R2013b or later:
t = readtable(filename);
  1 件のコメント
Chathu
Chathu 2015 年 1 月 13 日
Thanks for replying. Unfortunately my MatLab is little older than above said version.

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

カテゴリ

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