Arrays Matlab:连接两个单元阵列或结构
在Matlab中,如何连接两个单元阵列或结构 我有第一个单元格数组(或结构): 第二个单元阵列(或结构): 我需要得到这个结果:Arrays Matlab:连接两个单元阵列或结构,arrays,matlab,structure,cell,Arrays,Matlab,Structure,Cell,在Matlab中,如何连接两个单元阵列或结构 我有第一个单元格数组(或结构): 第二个单元阵列(或结构): 我需要得到这个结果: Name Value Type A1 1 a A1 1 a B1 56 b C2 58 c C2 58 c 感谢如果数据是单元格数组:请使用ismember的第二个输出: cell1 = {'A1';'A1';'B1';'C2';'C2'}; % example data cel
Name Value Type
A1 1 a
A1 1 a
B1 56 b
C2 58 c
C2 58 c
感谢如果数据是单元格数组:请使用
ismember的第二个输出
:
cell1 = {'A1';'A1';'B1';'C2';'C2'}; % example data
cell2 = {'A1',1;'B1',56;'C1',12;'C2',58;'C3',45;'C4',15}; % example data
[ii jj] = ismember(cell1,cell2(:,1));
result = cell2(jj(ii),:)
如果数据是结构矩阵:您只需要对上面的代码进行少量修改:
mat1.Name = ['A1';'A1';'B1';'C2';'C2']; % example data
mat2.Name = ['A1';'B1';'C1';'C2';'C3';'C4']; % example data
mat2.Value = [1; 56; 12; 58; 45; 15]; % example data
mat2.Type = ['a';'b';'c';'c';'c';'c']; % example data
[ii jj] = ismember(mat1.Name,mat2.Name,'rows');
result.Name = deal(mat2.Name(jj(ii),:));
result.Value = deal(mat2.Value(jj(ii),:));
result.Type = deal(mat2.Type(jj(ii),:));
那些“矩阵”是单元数组,对吗?路易斯:可能是结构矩阵。@ TimeSimple,考虑使用一个真实的数据库引擎来处理这样的事情。我希望我现在的编辑不会让它变得更模糊…:-)@LuisMendo,这很好,但是当在cell1中添加一个项目时,我会得到一个错误。例如,尝试使用:cell1={'A1';'A1';'B1';'C2';'C2';'A5'};将生成错误==>???下标索引必须是实正整数或逻辑数;再次感谢:)@TimeIsNear你说得对。我没有预料到
cell1
的某些元素在cell2
中不存在的情况。我已经用你的更正更新了我的答案
cell1 = {'A1';'A1';'B1';'C2';'C2'}; % example data
cell2 = {'A1',1;'B1',56;'C1',12;'C2',58;'C3',45;'C4',15}; % example data
[ii jj] = ismember(cell1,cell2(:,1));
result = cell2(jj(ii),:)
mat1.Name = ['A1';'A1';'B1';'C2';'C2']; % example data
mat2.Name = ['A1';'B1';'C1';'C2';'C3';'C4']; % example data
mat2.Value = [1; 56; 12; 58; 45; 15]; % example data
mat2.Type = ['a';'b';'c';'c';'c';'c']; % example data
[ii jj] = ismember(mat1.Name,mat2.Name,'rows');
result.Name = deal(mat2.Name(jj(ii),:));
result.Value = deal(mat2.Value(jj(ii),:));
result.Type = deal(mat2.Type(jj(ii),:));