根据条件返回单元格数组中的值

时间:2017-06-12 12:18:37

标签: arrays matlab cell-array

我有一个1x3的单元格数组,如下所示:

str = strings(6,1)
str(1) = 'A'
str(2) = 'B'
str(3) = 'A'
str(4) = 'B'
str(5) = 'A'
str(6) = 'B'

str2 = strings(6,1)
str(1) = 'r'
str(2) = 'r'
str(3) = 't'
str(4) = 's'
str(5) = 't'
str(6) = 'm'

a = [345; 344; 234; 234; 235; 231]

CA{1} = str
CA{2} = str2
CA{3} = a

我需要在第3列中提取值,其中: 第1列显示'A',第2列显示't'

我甚至无法找到如何接近它的开始,希望有人可以帮助我! 我已经尝试了下面的代码,但是它们返回一个空的向量,这可能是由于我错误地指出了问题,对不起!

3 个答案:

答案 0 :(得分:1)

我总是使用KISS代码(保持简单愚蠢)。我提出的方法可能不是最快或最优雅的,但我尝试了它并且它有效。

var grid = $("#grid").data("kendoGrid");
var columns = grid.columns;

var hiddenFields = [];
for(var i = 0; i < columns.length; ++i) {
  if(columns[i].hidden) {      
    hiddenFields.push(columns[i].field);
  }
}

在此示例中,我调用了您的单元格数组 cellarray 。你也可以使用strcmp而不是==,事实上你需要比较一个以上的角色。

答案 1 :(得分:0)

以下代码可能适用:

cellArray{3}((cellArray{1}=='A')&(cellArray{2}=='t'))

其中cellArray{3}是您想要值的单元格数组的列,cellArray{1}cellArray{2}是包含字符的列。这应该返回一个包含数值的矩阵。

我希望这是有道理的!

答案 2 :(得分:0)

我相信你正在寻找cellfun。您想要索引每个单元格的第3个元素,因此创建一个索引到值的第3个元素的函数,然后将其应用于每个单元格:

>> cellfun(@(c) c(3), CA,'UniformOutput',false)

ans =

  1×3 cell array

    {["A"]}    {["t"]}    {[234]}