【问题标题】:Enter values to correct table cell (according to entry of first column) in MATLAB在 MATLAB 中输入值以更正表格单元格(根据第一列的条目)
【发布时间】:2018-10-17 10:24:33
【问题描述】:

我有一个包含 R 行和 C 列的 MATLAB 数组,其中第一列包含数字标识符,这些标识符不一定是一组有序数字。

现在,我加载具有 R' 行和 2 列的第二个数组,其中第一列再次包含标识符,而第二列包含数字数据。如何有效地将标识符 I 对应的数据写入原始数组对应行(也由标识符 I 标识)的附加列中?

当然,一个简单的解决方案是构造 for 循环和 if-else 或 switch-case 条件,但我想必须有一种更优雅的矢量化方式来做到这一点。

进一步说明问题:

A1 = [        %first array
      1, 0.3  
      2, 0.9
      3, 12];

A2 = [        %second array
      1, 0.5
      3, 9];

G = [         %goal
     1, 0.3, 0.5
     2, 0.9, NaN
     3, 12, 9];

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

    您可以使用ismember

    G = A1; % define G as A1
    G(:,end+1) = NaN; % extend with a column of NaNs
    [is, ind] = ismember(A2(:,1), A1(:,1)); % matchings of first column of A2 in A1,
                                            % and their indices
    G(ind(is),end) = A2(is,2); % fill matched rows with values second column of A2
    

    注意:

    • 如果A2 中的某些标识符在A1不存在,这也有效。
    • 如果A2的几行具有相同的标识符,则与最后一个对应的值被写入G

    【讨论】:

    • 像魅力一样工作! ismember 正是我想要的。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 2019-10-04
    • 2021-05-21
    • 1970-01-01
    • 2014-03-18
    • 2019-05-31
    • 1970-01-01
    相关资源
    最近更新 更多