Return 个基于条件的元胞数组中的值
Return values in cell array based on a condition
我有一个 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'
。
我什至找不到如何处理它的开始,希望有人能帮助我!
我已经尝试了下面的代码,但是它们 return 是一个空向量,这可能是由于我对问题的错误说明,对此感到抱歉!!
我总是使用 KISS 代码(保持简单愚蠢)。我提出的方法可能不是最快或最优雅的,但我试过了并且有效。
% I'm using the length of cellarray{1} as reference, since all cells are the same length
for k = 1:length(cellarray{1})
if ((cellarray{1}(k) == 'A') && (cellarray{2}(k) == 't'))
% Assign the value to a new vector, or display the value... But this is how you get to it.
disp(cellarray{3}(k));
end
end
我在这个例子中调用了你的元胞数组cellarray。您也可以使用 strcmp 而不是 ==,事实上,如果您要比较的不仅仅是一个字符,您将需要这样做。
以下代码可能适用:
cellArray{3}((cellArray{1}=='A')&(cellArray{2}=='t'))
其中 cellArray{3}
是您要从中获取值的元胞数组的列,cellArray{1}
和 cellArray{2}
是包含字符的列。这应该 return 一个包含数值的矩阵。
我希望这是有道理的!
我相信您正在寻找 cellfun。您想要索引到每个单元格的第三个元素,因此创建一个索引到值的第三个元素的函数,然后将其应用于每个单元格:
>> cellfun(@(c) c(3), CA,'UniformOutput',false)
ans =
1×3 cell array
{["A"]} {["t"]} {[234]}
我有一个 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'
。
我什至找不到如何处理它的开始,希望有人能帮助我! 我已经尝试了下面的代码,但是它们 return 是一个空向量,这可能是由于我对问题的错误说明,对此感到抱歉!!
我总是使用 KISS 代码(保持简单愚蠢)。我提出的方法可能不是最快或最优雅的,但我试过了并且有效。
% I'm using the length of cellarray{1} as reference, since all cells are the same length
for k = 1:length(cellarray{1})
if ((cellarray{1}(k) == 'A') && (cellarray{2}(k) == 't'))
% Assign the value to a new vector, or display the value... But this is how you get to it.
disp(cellarray{3}(k));
end
end
我在这个例子中调用了你的元胞数组cellarray。您也可以使用 strcmp 而不是 ==,事实上,如果您要比较的不仅仅是一个字符,您将需要这样做。
以下代码可能适用:
cellArray{3}((cellArray{1}=='A')&(cellArray{2}=='t'))
其中 cellArray{3}
是您要从中获取值的元胞数组的列,cellArray{1}
和 cellArray{2}
是包含字符的列。这应该 return 一个包含数值的矩阵。
我希望这是有道理的!
我相信您正在寻找 cellfun。您想要索引到每个单元格的第三个元素,因此创建一个索引到值的第三个元素的函数,然后将其应用于每个单元格:
>> cellfun(@(c) c(3), CA,'UniformOutput',false)
ans =
1×3 cell array
{["A"]} {["t"]} {[234]}