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

如何在特定条件下从一个矩阵创建两个或多个矩阵?

何兴学
2023-03-14

你好,我是matlab新手,我不知道如何解决问题。

我有:

1   0
2   334.456
3   654.7654
4   65.76543
1   0
2   543.43567
3   98.432
4   54.9876
5   12.456

和Matrix2:

1   2
2   3
3   4
1   2
2   3
3   4
4   5

Matrix2按照链接出现的顺序表示在Matrix1中找到的链接。

我想在块(矩阵)中分离链接,每个块从停止1开始。因此,通过分析矩阵2,我应该产生两个新的矩阵,一个是链接(1,2)(2,3)(3,4),另一个是链接(1,2)(2,3)(3,4)(4,5)。所以每次我找到stop 1,它就会开始构建一个新的矩阵
我希望AB的内容如下:

A= [1,2, 334.456; 2,3,654.7654;3,4,65.76543]
B=[1,2,543.43567;2,3,98.432;3,4,54.9876;4,5,12.456]

共有2个答案

符懿轩
2023-03-14

也许它会有用。

  Matrix1 = [
    1   0
    2   334.456
    3   654.7654
    4   65.76543
    1   0
    2   543.43567
    3   98.432
    4   54.9876
    5   12.456
  ];

  result = {};
  index = 1;
  temp = [];
  prev = [];

  for i=1:size(Matrix1)(1)
    if (Matrix1(i, 1) == 1)
      if (~isempty(temp))
        result{index++} = temp;
        temp = [];
      end
      prev = Matrix1(i, 1:2);
    else
      curr = Matrix1(i, 1:2);
      val = [prev(1), curr(1), curr(2)];
      prev = curr;

      temp = [temp; val;];
    end
  end

  if (~isempty(temp))
    result{index} = temp;  
  end

  result
郑锋
2023-03-14

matrices是一个单元格数组,包含所需的不同矩阵的数量(基于Matrix2第1列中的1的数量)。

Matrix1=[1 0; 2   334.456;3   654.7654;4   65.76543;1   0;2   543.43567;3   98.432;4   54.9876;5   12.456];
Matrix2=[1   2; 2   3; 3   4; 1   2; 2   3; 3   4; 4   5];

rows=find(Matrix2(:,1)==1); % find row numbers with 1 in column 1 of matrix 2)
rows=[rows(2:end); size(Matrix2,1)+1]; % ignore (obvious) first row, add end of Matrix2
nrows=size(rows,1);

matrices=cell(nrows,1);
for i=1:nrows
    lb=1;
    if i>1
        lb=rows(i-1);
    end
    matrices{i,1}=zeros(rows(i)-lb,3);
    for j=lb:rows(i)-1
        matrices{i,1}(j-lb+1,:)=[Matrix2(j,:), Matrix1(lb+Matrix2(j,2)-2+i,2)];
    end
end

结果如下:

>> matrices{1,1}

ans =

    1.0000    2.0000  334.4560
    2.0000    3.0000  654.7654
    3.0000    4.0000   65.7654

>> matrices{2,1}

ans =

    1.0000    2.0000  543.4357
    2.0000    3.0000   98.4320
    3.0000    4.0000   54.9876
    4.0000    5.0000   12.4560
 类似资料:
  • 我想在Python中生成一个小于或等于另一个矩阵的随机0-1矩阵。例如,我有一个特定的矩阵: 我想生成一个随机矩阵: 正如我们所看到的,A>=Y。我如何在Python中生成随机矩阵y?

  • 如果这两个矩阵不是无序的,长度相同,那么下面的代码应该可以工作,并且是有效的。 我的一个老练的解决方案是将我要用于匹配的每个矩阵的各个列串联起来。在本例中,我将使用所有列。 这就是我正在寻找的结果,但我想知道是否有更优雅的东西,比如%中的向量函数

  • 问题内容: 我需要快速创建一个只有两个圆角的矩形(也可以使用目标C代码)。 目前,我的代码正在创建两个矩形 和 并将它们合并(有两个直角和两个圆角),但是我对代码不满意,并且我很确定应该有更好的方法。 我是iOS和图形开发的新手。 问题答案: 在 Swift 2.3中, 您可以这样做 在 Objective-C中, 您可以使用class方法 示例实现- 并将上述方法称为-

  • 基于我下面链接的相关问题(请参见@Aleh solution):我希望只计算给定幂的矩阵中列之间的唯一乘积。 例如,对于N=5,M=3,p=2,我们得到列(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)的乘积。我想修改(@Aleh)代码,只计算(1,1)、(1,2)、(1,3)、(2,2)、(2,3)、(3,3)列之间的乘积。但我想对每个第

  • 问题内容: 创建哪一个将坐标从一个矩形映射到另一个矩形(给出浮动/双矩形)的最简单方法是什么? 更新1 矩形可以完全不同。例如[(0,0)-(1,1)]和[(150,-14)-(-1000,-14.1)]。并且转换应该统一转换。例如,矩形角应一一变换。例如,坐标(0,0)应该变成(150,-14)。 更新2 我需要对象,而不仅仅是计算。因为我想将其应用于对象。我也想以一些简单转换的串联形式。 更新