如何生成x的前20个幂?

 染伊沐2010 发布于 2023-02-13 15:44
  • php
  • 所以,我有X,一个300乘1的矢量,我想要[1,X,X*X,X*X*X,......,X*X*...*X],一个300乘20的矩阵.

    我该怎么做?

    X=[2;1]
    [X,X.*X,X.*X.*X]
    
    ans =
    
       2   4   8
       1   1   1
    

    这是有效的,但我无法打字输出整个事情.当然我不必写一个for循环?

    2 个回答
    • 使用bsxfun一个简洁的解决方案,或去Luis Mendo的盛会节省一些时间;)

      powers = 1:20;
      x = 1:20;
      
      result = bsxfun(@power,x(:),powers(:).');    
      

      得到:

       1    1    1 ...
       8   16   32 ...
      27   81  243 ...
      64  256 1024 ...
      ... ...  ...
      

      2023-02-13 15:46 回答
    • 如果要最小化操作次数:

      cumprod(repmat(X(:),1,20),2) %// replace "20" by the maximum exponent you want
      

      基准测试:X尺寸为300x1,最大指数为20.我用tic,测量时间toc,平均1000次.结果(平均值):

      使用cumprod(此答案):8.0762e-005秒

      使用bsxfun(@thewaywewalk回答):8.6170e-004秒

      2023-02-13 15:48 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有