MatLab查找文本单元格数组的列数

MatLab查找文本单元格数组的列数,matlab,Matlab,我有一个单元格数据类型矩阵,其中包含一个标题和大量行 样本数据: set press dp 32.7045 17.805965 123.75047 32.690094 17.80584 123.74992 32.6232 17.815094 123.790115 我试图使用strcmp命令查找特定列的索引,以搜索所有数据 dpCol = strcmp([data{:}], 'dp') 这总是会回来 dpCol = 0

我有一个单元格数据类型矩阵,其中包含一个标题和大量行

样本数据:

set         press       dp
32.7045     17.805965   123.75047
32.690094   17.80584    123.74992
32.6232     17.815094   123.790115
我试图使用strcmp命令查找特定列的索引,以搜索所有数据

dpCol = strcmp([data{:}], 'dp')
这总是会回来

dpCol =

     0

我使用的数据单元格类型是否错误?谢谢大家!

尝试使用单元格符号仅生成第一行,例如:

data(1,:) = {'set','press','dp'}
而不是解包*整个单元阵列,因为它可以在单元阵列上运行

>>> data = {'set'         'press'       'dp'
32.7045     17.805965   123.75047
32.690094   17.80584    123.74992
32.6232     17.815094   123.790115}

data = 

    'set'        'press'      'dp'      
    [32.7045]    [17.8060]    [123.7505]
    [32.6901]    [17.8058]    [123.7499]
    [32.6232]    [17.8151]    [123.7901]

>>> col_idx = strcmp(data(1,:),'dp')

col_idx=

     0     0     1
然后使用逻辑索引和

或者解包*并连接逗号分隔的列表

>>> dp = [data{2:end,col_idx}]

dp =

  123.7505  123.7499  123.7901
作为另一种尝试

然后,
dp
就是

>>> dp = [datastruct.dp]

dp =

  123.7505  123.7499  123.7901

*在花括号内使用冒号运算符将单元格数组解压为逗号分隔的列表。使用方括号水平连接逗号分隔列表,该列表返回字符数组
set pressdp{{{
因为列表中的第一项是字符数组。在
'set'
'press'
'dp'
之间和之后的垃圾字符是由读取双精度字符作为
字符
引起的。即:
字符(32.7045)
相当于ASCII空格。数组总是以列的形式解压。

要了解代码不起作用的原因,请查看中间结果
[data{:}]
。这绝对不是您想要的。尝试了其他选项,如
[date{1,:}]
但这没有帮助…谢谢你,马克,正是我所需要的。另一个问题确实出现了,给我以下错误
使用被连接矩阵的cat维度的错误是不一致的。cell2mat(第83行)中的错误m{n}=cat(1,c{:,n});OpenFile(第38行)中的错误dp=cell2mat(数据(2:end,col_idx))
尝试用列号替换列索引,也没有帮助。可选选项会返回结果,但它们都在同一单元格中。所有结果都会一个接一个地连接起来。
>>> datastruct = cell2struct(data(2:end,:),data(1,:),2)
datastruct = 

3x1 struct array with fields:

    set
    press
    dp
>>> dp = [datastruct.dp]

dp =

  123.7505  123.7499  123.7901