读取字符串矩阵
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
.
.
我需要读取这样的文本文件(列可以是 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
.
.