读取字符串矩阵

Read matrix of string

我需要读取这样的文本文件(列可以是 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 By 72

====编辑====

输出示例(矩阵 11By6):

RRSSTT
RRSTST
RRSTTS
RRTSST
RRTSTS
RRTTSS
RSRSTT
RSRTST
RSRTTS
RSSRTT
RSSTRT

我觉得自己像个妓女,但这是众多可能的解决方案之一。

假设您的文件名为 test.csv -

fileID = fopen('test.csv');
C = textscan(fileID,'%s %s %s %s %s %s' ,'Delimiter',',');

====编辑====

如果您不想写 %s 6 次 - 执行:

formatSpec = '%s';
N = 6;
C = textscan(fileID, repmat('%s', [1 N]),'Delimiter',',');

同样,这只是众多 * 方法之一。

这将生成一个 1 x 6 的单元格结构,其中 6 个单元格中的每一个代表字符串的一列。您现在可以使用大括号对其进行索引:

>> 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'

=====第二次编辑=====

转换为字符数组: 使用字符

 T  = reshape(char(V(:)),size(V)) %// size of T is now 11*6 Char

>> T =
RRSSTT
RRSTST
RRSTTS
RRTSST
.
.