在matlab中的另一个单元格中搜索矩阵元素

Search elements of matrix in another cell in matlab

我有一个列矩阵和一个包含两个 columns.The 的元胞数组,第一列有 1x2 双精度,第二列有 1x1 双精度。

例如

columnMatrix = [1;5]; 
cellArray = {[1,8],[10];[8,1],[20];[4,6],[80];[3,5],[40];[14,16],[85];[5,10],[36]};

我想在 cellArray(:,1) 中搜索 columnMatrix 的每个元素,然后 return 在 cellArray(:,2)

中搜索其对应的值

例如输出必须是这样的

newCell = {[1],[10,20];[5],[40,36]};

我试过这样使用ismember函数

[~,idx] = ismember(cell2mat(cellArray(:,1)),columnMatrix (: , 1));

这 return 是所有具有搜索元素的索引,但它们位于两个单独的列中,我无法执行任何其他逻辑操作来获取相应的第二列条目。

有什么方法可以实现这个操作吗?有人可以帮忙吗?

谢谢

首先,将 cellArray 的第一列转换为矩阵,以便更容易在其中搜索值。然后迭代 columnMatrix 值(例如使用 arrayfun,但是您还可以使用 for 循环),从 cellArray 的第二列中找到匹配的行(any 跨列)和 select 对应的值,转换为数字数组([cellArray{...,2}] ).最后,将 columnMatrix 附加为结果元胞数组的第一列:

columnMatrix = [1;5]; cellArray = {[1,8],[10];[8,1],[20];[4,6],[80];[3,5],[40];[14,16],[85];[5,10],[36]};

mat = cell2mat(cellArray(:,1));
values = arrayfun(@(x) [cellArray{any(mat==x,2),2}], columnMatrix, 'uni', false);
result = [num2cell(columnMatrix), values];