我有一个包含标题和大量行的单元格数据类型矩阵。
示例数据:
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
我使用的数据单元格类型错误还是什么?谢谢!
答案 0 :(得分:2)
尝试使用单元格表示法仅产生第一行,EG:
private Visibility _imageVis;
public Visibility ImageVis
{
get { return _imageVis; }
set
{
_imageVis = value;
NotifyPropertyChanged("ImageVis");
}
}
而不是解包 * 整个单元格数组,因为strcmp
可以在单元格数组上运行。
data(1,:) = {'set','press','dp'}
然后使用逻辑索引和cell2mat
...
>>> 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
或解包 * 并连接逗号分隔列表
>>> dp = cell2mat(data(2:end,col_idx))
dp =
123.7505
123.7499
123.7901
作为替代方案,请尝试cell2struct
。
>>> dp = [data{2:end,col_idx}]
dp =
123.7505 123.7499 123.7901
然后>>> datastruct = cell2struct(data(2:end,:),data(1,:),2)
datastruct =
3x1 struct array with fields:
set
press
dp
是......
dp
* 在花括号内使用冒号运算符将单元格数组解压缩为逗号分隔列表。使用方括号水平连接逗号分隔列表,该列表返回字符数组>>> dp = [datastruct.dp]
dp =
123.7505 123.7499 123.7901
,因为列表中的第一项是字符数组。 set pressdp{{{
,'set'
和'press'
之间和之后的垃圾字符是通过将双打读取为'dp'
引起的。 IE:char
是与空格相当的ASCII。数组总是以列的形式解压缩。