【问题标题】:MATLAB expression column indexingMATLAB 表达式列索引
【发布时间】:2011-02-13 06:20:19
【问题描述】:

我有一个给出矩阵的表达式,我想访问一个元素,而不创建临时变量,类似于 cov(M)(1,1)。我该怎么做?

谢谢!

【问题讨论】:

    标签: matlab indexing


    【解决方案1】:

    可以使用匿名函数:

    >> f11 = @(M) M(1,1);
    >> M = [1 2; 9 4];
    >> cov(M)
    
    ans =
    
        32     8
         8     2
    
    >> f11(cov(M))
    
    ans =
    
        32
    

    或者对于纯粹主义者来说,这里根本没有中间变量:

    >> feval(@(M) M(1,1), cov(M))
    
    ans =
    
        32
    

    【讨论】:

    • 不错的解决方案,但在您的 feval 语句中,为了清楚起见,请考虑将参数更改为与“M”不同的名称。
    【解决方案2】:

    我的路径中有这样的功能:

    getRegion = @(matrix, rows, cols) matrix(rows,cols);
    

    这样我就可以打电话了:

    getRegion(cov(M), 1, 1);
    

    如果您想要更大的区域,它也可以:

    getRegion(cov(M), 1:2, 2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      相关资源
      最近更新 更多