【问题标题】:MATLAB - Perform operation on matrix indices without a for loopMATLAB - 在没有 for 循环的情况下对矩阵索引执行操作
【发布时间】:2013-02-16 07:30:59
【问题描述】:

自从我在MATLAB中进行矩阵运算以来已经有一段时间了,所以如果这很容易解决,请原谅我。

我有一些 NxM 矩阵 A,我想对 A 的列索引执行操作。我知道如何使用for 循环来做到这一点,但由于我使用的是 MATLAB,我想利用 MATLAB 快速对矩阵进行运算的能力。

假设我有一个名为myFunc 的函数。有没有办法在没有for 循环的情况下执行以下操作(例如使用矩阵乘法):

for i=1:M
    A(:, floor(i*myFunc())) = A(:, i)

【问题讨论】:

    标签: matlab for-loop matrix indices


    【解决方案1】:

    这样好吗?

    A(:,floor([1:M]*myFunc())) = A(:,1:M)
    

    因为我不知道你的 myFunc 是否也依赖于 i。

    【讨论】:

    • myFunc() 如何依赖i
    • 如果不同 i 的 myFunc(i) 返回不同的值,那么我们需要确保 myFunc([1:M]) 也返回一个向量。并使用 .*.
    • @GeorgeSkoptsov 这个问题没有说参数是什么,myFunc() 将返回什么,它可以返回一个标量或一个向量,如果返回一个标量,则不需要.* ;如果返回一个向量,需要确保它的大小与 1:M 相同。否则使用 .* 会导致错误
    【解决方案2】:

    您可能只需将i* 替换为(1:M).*,如下所示:

    A(:, floor((1:M).*myFunc())) = A(:,1:M)
    

    请注意,.* 进行元素乘法而不是矩阵乘法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 2016-07-13
      • 2021-12-31
      • 2015-07-18
      • 2019-12-06
      相关资源
      最近更新 更多