【问题标题】:Vectorized exponentiation矢量化幂
【发布时间】:2013-05-28 17:23:58
【问题描述】:

我有两个向量,X 的基数和N 的指数。我想为X 中的每个xN 中的n 获取所有值e = x<sup>n</sup> 的矩阵。

例如下面的输入:

X = [2 3 4]'
N = [1 2 3]

应该产生:

ans = [2 4 8; 3 9 27; 4 16 64]

有没有办法在不循环的情况下得到这个(就像你可以通过使用逐行乘积来得到 x×n 的所有值一样)?

【问题讨论】:

    标签: matlab octave exponentiation


    【解决方案1】:

    这可能比bsxfun 的答案有点草率,但你可以使用meshgrid

    E = X.^(meshgrid(N)')
    

    这假设XN 都是行向量。如果两者都是列向量,则变为:

    E = X.^(meshgrid(N))
    

    【讨论】:

      【解决方案2】:

      使用bsxfun:

      bsxfun(@power, X, N)
      

      这假定X 是列向量,N 是行向量。如果您想保证这一点,请使用以下更健壮的语法:

      bsxfun(@power, X(:), N(:).')
      

      【讨论】:

      • 很好,谢谢。 (让我感到羞耻的是,一周前我偶然发现了一个用 bsxfun 解决的类似问题。)
      猜你喜欢
      • 2017-06-18
      • 1970-01-01
      • 2018-10-29
      • 2020-04-22
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多