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

时间:2016-01-12 21:04:06

标签: 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

我使用的数据单元格类型错误还是什么?谢谢!

1 个答案:

答案 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。数组总是以列的形式解压缩。