matlab中的多类型文本读取
我正在从事一个matlab项目。我有一个这样的文本文件matlab中的多类型文本读取,matlab,file-io,Matlab,File Io,我正在从事一个matlab项目。我有一个这样的文本文件 AGE 1 1 SEX 2 2 NOP 3 0 SES 0 5 PDD 6 6 ACD 0 0 UDC 8 3 我想从这个以制表符分隔的文件中创建一个变量,使用textread,如下面的示例所示 x= 'AGE' 1 1 'SEX' 2 0 'NOp' 3 3 'SES' 0 5 'PDD' 6 6 'ACD' 0
AGE 1 1
SEX 2 2
NOP 3 0
SES 0 5
PDD 6 6
ACD 0 0
UDC 8 3
我想从这个以制表符分隔的文件中创建一个变量,使用textread,如下面的示例所示
x=
'AGE' 1 1
'SEX' 2 0
'NOp' 3 3
'SES' 0 5
'PDD' 6 6
'ACD' 0 0
'UDC' 8 3
我怎么做?我尝试了许多方法,但无法找到解决方案。请帮助。您可以这样做:
Filename = 'testfile.txt';
fid = fopen(Filename);
Output = textscan(fid, '%s %d %d', 'delimiter', ' ', 'MultipleDelimsAsOne', 1);
fclose(fid);
然后您将有:
Output =
{7x1 cell} [7x1 int32] [7x1 int32]
Output{1} =
'AGE'
'SEX'
'NOP'
'SES'
'PDD'
'ACD'
'UDC'
Output{2} =
1
2
3
0
6
0
8
Output{3} =
1
2
0
5
6
0
3
然后展开单元阵列元素,以便可以直接寻址每个元素:
x = [ Output{1}, num2cell(Output{2}), num2cell(Output{3}) ]
x =
'AGE' [1] [1]
'SEX' [2] [2]
'NOP' [3] [0]
'SES' [0] [5]
'PDD' [6] [6]
'ACD' [0] [0]
'UDC' [8] [3]
x(1,1) =
'AGE'
x(5,2) =
[6]
然后您可以直接处理这些元素:
x = [ Output{1}, num2cell(Output{2}), num2cell(Output{3}) ]
x =
'AGE' [1] [1]
'SEX' [2] [2]
'NOP' [3] [0]
'SES' [0] [5]
'PDD' [6] [6]
'ACD' [0] [0]
'UDC' [8] [3]
x(1,1) =
'AGE'
x(5,2) =
[6]
谢谢你,它成功了,但我如何从中获取任何单元格值。。。例如,我想获得(1,1)单元格值如何达到“年龄”字符串…@OzgurEffe检查编辑后的答案
x(1,1)
返回'AGE'
。有没有办法将所有第一列单元格值分配给一个新的变量名,如newvar\u AGE=1 newvar\u SEX=2 newvar\u NOP=3?创建这么多类似的变量是不必要的复杂性,并且使数据处理变得困难(至少不使用eval
)。最好创建一个结构数组:rowtheids=x(:,1)代码>xStruct=cell2struct(x(:,2),行标题)代码>。然后xStruct.AGE
给你1
,xStruct.NOP
给你3
,依此类推。