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

我正在从事一个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   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
,依此类推。