当前位置: 首页 > 知识库问答 >
问题:

MATLAB将不同维度的矩阵组合起来,填充相应指标的值

乐正光誉
2023-03-14

我有两个矩阵,22007x3352x2。每列中的第一列是一个索引,其中大部分(但不是全部)是共享的(即x1包含不在x2中的索引)。

我想将这两个矩阵组合成一个22007x4矩阵,这样第4列就可以填入两个原始矩阵中特定索引对应的值。

例如:

x1 =
    1   1   5
    1   2   4
    1   3   5
    2   1   1
    2   2   1
    2   3   2

x2 =
    1   15.5
    2   -5.6

变成

x3 =
    1   1   5   15.5
    1   2   4   15.5
    1   3   5   15.5
    2   1   1   -5.6
    2   2   1   -5.6
    2   3   2   -5.6

我试过类似的方法

x3(1:numel(x1),1:3)=x1;
x3(1:numel(x2(:,2)),4)=x2(:,2);

但首先我得到了错误

??? Subscripted assignment dimension mismatch.

然后我想不出我会填满剩下的部分。

重要的一点是,在我的数据中,每个索引的行数不一定相等。

我该怎么做呢?

共有1个答案

慕嘉运
2023-03-14

从这里得到Amro的答案

[~, loc] = ismember(x1(:,1), x2(:,1)); 

ismember的第二个参数返回x2中可以找到x1的每个元素的位置(如果找不到,则返回0)

a = x2(loc(loc > 0), 2);

使用这些行索引获取相关值,但不包括零,因此loc

在x1的末尾添加一个新的默认值列。我认为NaN()可能更好,但是zeros()也可以

newCol = NaN(size(x1,1),1)

现在使用逻辑索引来获取非零元素的位置,并将a放在这些位置

newCol(loc > 0) = a

最后把它粘在最后

x3 = [x1, newCol]
 类似资料:
  • 如果数据帧列中的单元格值匹配,我试图用"1"s填充相邻矩阵。“1”的位置基于同一行中的相应值。 更准确地说:数据帧pat1 我想填充矩阵单元格,,,和在空矩阵与相应的行/cole. name与"1"起,和,分别。 所需的输出将是带有列名的矩阵(数据=c(0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0),nrow=4,byrow=T) 我找过了,但还没有找到方法。

  • 主要内容:引用矩阵中的元素,删除矩阵中的一行或一列,矩阵运算,以下是纠正/补充内容:矩阵是数字的二维数组。 在MATLAB中,可以通过在每行中输入元素来创建一个矩形,以逗号或空格分隔数字,并使用分号标记每一行的结尾。 例如,创建一个矩阵 - MATLAB将执行上述语句并返回以下结果 - 引用矩阵中的元素 要引用矩阵的第行和第列中的元素,可以这样书写 - 例如,要引用矩阵的第行和第列中的元素,如上一节所述,可以这样书写 - MATLAB执行上述语句并返回以下结果 - 要引用第列中的

  • 问题内容: 我有以下代码: 它创建一个填充零的矩阵。相反,我想知道是否有一种函数或方法可以将它们初始化为s,而方法很简单。 问题答案: 您很少需要在numpy中进行矢量操作循环。您可以创建一个未初始化的数组并立即分配给所有条目: 我已经在这里和Blaenk发布的时间安排了时间: 时序显示优先选择作为更快的替代方案。OTOH,我喜欢numpy的便捷实现,在该实现中您可以同时为整个slice分配值,代

  • 我有22个矩阵,行数相等(即691个),列数不同(即22-25个)。我必须在每个矩阵中添加对应于同一行、同一列的值,从而得到一个维度为691*25的矩阵。 每个矩阵都是带有数值的双矩阵。如何将这两个矩阵相加,得到第三个矩阵的维数为691*25。因为fullanno2短三列,所以对于这些列,生成的矩阵将只有来自第一个矩阵的值。 我的方法是:使用colname的setdiff来获取较小矩阵中不存在的列

  • 本文向大家介绍MATLAB索引矩阵和数组,包括了MATLAB索引矩阵和数组的使用技巧和注意事项,需要的朋友参考一下 示例 MATLAB允许使用几种方法来索引(访问)矩阵和数组的元素: 下标索引-您可以在其中分别指定所需元素在矩阵每个维度中的位置。 线性索引-将矩阵视为向量,无论其尺寸如何。这意味着,您可以用一个数字指定矩阵中的每个位置。 逻辑索引-在其中使用逻辑矩阵(以及true和false值的矩

  • 在这里,我试图实现一个具有单个隐藏层的神经网络来分类两个训练示例。该网络利用sigmoid激活函数。 各层尺寸和重量如下: 我在反向传播中遇到了一个矩阵维数不正确的问题。此代码: 返回错误: 如何计算上一层的误差? 更新: 返回错误: 是否未正确设置矩阵尺寸?