【问题标题】:complex looping using Matlab使用 Matlab 进行复杂循环
【发布时间】:2013-03-01 14:02:29
【问题描述】:

设五个矩阵为:

 A=  [A1 A1 A1 A1 A1; A2 A2 A2 A2 A2; A3 A3 A3 A3 A3]

 B= [B1 B1 B1  B1  B1; B2 B2  B2 B2 B2;B3 B3 B3 B3 B3]

 C=[ C1 C1 C1 C1 C1; C2 C2 C2 C2 C2; C3 C3 C3 C3 C3]

 D= [D1 D1 D1 D1 D1 ; D2 D2 D2 D2 D2; D3 D3 D3 D3 D3]

 E=[ E1 E1 E1 E1 E1; E2 E2 E2 E2 E2; E3 E3 E3 E3 E3]

我想编写一个程序,使输出包括获取每个给定矩阵的每一行并形成一个新矩阵。当矩阵长度增加并且给定矩阵的数量也增加时,如何在这种情况下使用循环。这个问题在我看来是一个复杂的问题。因为我想通过对任意数量的矩阵使用循环和输出来概括,比如 20,并且列数也增加到 25,那么如何获得这些 P1 到 P20 输出。任何人都可以帮助我解决这个使用 Matlab 的复杂问题

P1=[ A1 A1  A1 A1 A1; B1 B1 B1 B1 B1; C1 C1 C1 C1 C1 C1; D1 D1 D1 D1 D1; E1 E1 E1 E1 E1]
P2=[ A2 A2  A2 A2 A2; B2 B2 B2 B2 B2; C2 C2 C2 C2 C2 C2; D2 D2 D2 D2 D2; E2 E2 E2 E2 E2]

同样得到其他矩阵。

注意:给定的 5 个矩阵是在循环的帮助下生成的。所以首先我会得到如下值:

  A= A1
  B= B1
  C=C1
  D=D1
  E=E1

  A= A1 A1 
  B= B1 B1
  C=C1  C1
  D=D1  D1
  E=E1  E1 .... AND SO ON

【问题讨论】:

    标签: matlab matlab-deployment


    【解决方案1】:

    获取一个循环并将所有矩阵放在一起形成一个 3D 张量。或者只是在创建矩阵时将它们放入 3D 张量中。

    M(:,:,1) = A; M(:,:,2) = B; etc
    

    然后

    squeeze(M(1,:,:))' is the P1, squeeze(M(2,:,:))' is the P2
    

    例子:

    M(:,:,1) =
    
         1     2
         3     4
    
    
    M(:,:,2) =
    
         5     6
         7     8
    
    >> squeeze(M(1,:,:))'
    
    ans =
    
         1     2
         5     6
    

    【讨论】:

    • 谢谢,但是当给定矩阵的数量很大并且列也很大时如何概括它。然后我想使用某种方法来同时生成输出,比如 P1,..... P100
    • 我认为它已经可以泛化了,只需将更大的矩阵放在 M 中并遍历行
    • 对于我刚才所做的编辑帖子,你的技术仍然可以工作。我的意思是说每个值都是在循环中一个接一个地生成的,但我认为您的方法要求首先生成所有值,然后才能应用该挤压方法。如果我错了,请纠正我。
    • 这只要求在开始之前知道大小。这些值可以单独分配。
    • 在使用您的方法时,显示以下错误 分配的非单件右轴维度比非单件下标更多。使用此方法时可能出现的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多