根据键

时间:2017-05-30 14:14:00

标签: matlab cell-array

我有两个数据集分别存储在单元格数组和双数组中。两个数组的设计是:

数组1(名称: res )(double)由两列组成;唯一的id列和数据列。

enter image description here

数组2(名称: config )(单元格数组)包含3个列单元格,每个单元格内部都有一个字符串。数组中的最后一个单元格包含一个与数组1中的id匹配的id双整数。单元格数组中的双整数在必要时转换为double。

enter image description here

我想合并两个数据集,以便将单元格数组中的3个单元格和数组1中的结果列放在一个公共单元格数组中。我该怎么做?

我有以下代码。代码未返回结果的正确顺序。

function resMat = buildResultMatrix(res, config)

resMat = {};

count = 1;

count_max = size(res,1)/130;

for i = 1 : size(res,1)
   for j = 1 : size(res,1)
       if isequal(res(i),str2double(config{j,3}))
           if i == 1
               resMat(end+1,:) = {config{j,:} res(j,2:end)};
           else
               if count == 1
                   resMat(end+1,:) = {config{j,:} res(j,2:end)};
               elseif count == count_max
                   resMat(end+1,:) = {config{j,:} res(j,2:end)};
               else
                   resMat(end+1,:) = {config{j,:} res(j,2:end)};
               end
               count = count + 1;
            end
        end
    end
    count = 1;
end
end

1 个答案:

答案 0 :(得分:0)

首先将config中的ID转换为数字:

config(:,3) = num2cell(str2double(config(:,3)));

然后运行:

res = sortrows(res,1);
config(:,4) = num2cell(res(cell2mat(config(:,3)),2))

这会将来自res的{​​{1}}的{​​{1}}数据放入具有相同ID的行中。