在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];
我有一个列矩阵和一个包含两个 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];