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