Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Matlab:连接两个单元阵列或结构_Arrays_Matlab_Structure_Cell - Fatal编程技术网

Arrays 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

在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
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),:));