我需要读取这样的文本文件(列可以是6,9,12等等):
R,R,S,S,T,T
R,R,S,T,S,T
R,R,S,T,T,S
R,R,T,S,S,T
R,R,T,S,T,S
R,R,T,T,S,S
R,S,R,S,T,T
R,S,R,T,S,T
R,S,R,T,T,S
R,S,S,R,T,T
R,S,S,T,R,T
并将数据放入字符串矩阵(不带逗号)。
我已尝试使用mat=dlmread(file_name)
,但我认为它仅适用于数字。
我也试过这个:
mat=fileread(filename);
mat(mat==',') = ''
但输出很奇怪,mat
是1乘72
==== EDIT ====
输出示例(矩阵11By6):
RRSSTT
RRSTST
RRSTTS
RRTSST
RRTSTS
RRTTSS
RSRSTT
RSRTST
RSRTTS
RSSRTT
RSSTRT
答案 0 :(得分:2)
我觉得自己像个妓女,但这是许多可能的解决方案之一。
假设您的文件名为test.csv -
fileID = fopen('test.csv');
C = textscan(fileID,'%s %s %s %s %s %s' ,'Delimiter',',');
==== EDIT ====
如果您不想写%s 6次 - 请执行:
formatSpec = '%s';
N = 6;
C = textscan(fileID, repmat('%s', [1 N]),'Delimiter',',');
同样,这只是许多方法中的一种。
这将生成1 x 6的单元格结构,其中6个单元格中的每一个都代表String的一列。您现在可以使用大括号对其进行索引:
>> C{1}
>>ans =
'R'
'R'
'R'
'R'
'R'
'R'
'R'
'R'
'R'
'R'
'R'
如果你想要一个完整的单元格结构,每个单元格中只有1个字符,你就必须这样做:
V = horzcat(C{:}); %// size of V is 11x6
V =
'R' 'R' 'S' 'S' 'T' 'T'
'R' 'R' 'S' 'T' 'S' 'T'
'R' 'R' 'S' 'T' 'T' 'S'
'R' 'R' 'T' 'S' 'S' 'T'
'R' 'R' 'T' 'S' 'T' 'S'
'R' 'R' 'T' 'T' 'S' 'S'
'R' 'S' 'R' 'S' 'T' 'T'
'R' 'S' 'R' 'T' 'S' 'T'
'R' 'S' 'R' 'T' 'T' 'S'
'R' 'S' 'S' 'R' 'T' 'T'
'R' 'S' 'S' 'T' 'R' 'T'
=====第二次编辑=====
要转换为Char数组: 使用Char
T = reshape(char(V(:)),size(V)) %// size of T is now 11*6 Char
>> T =
RRSSTT
RRSTST
RRSTTS
RRTSST
.
.