【问题标题】:MATLAB Nesting ExpressionMATLAB 嵌套表达式
【发布时间】:2013-07-23 00:56:19
【问题描述】:

只是一个简单的嵌套问题:

我有一个<100x100 double> 矩阵mat_B,我有一个cumsum。从结果矩阵mat_A,我只需要最后一行vec_C,我需要再次cumsum。我的代码如下所示:

mat_A = cumsum(mat_B);
vec_C = cumsum(mat_A(end,:));

我的问题是,是否可以将所有这些都放在一行代码中。我知道cumsum(mat_B) 返回一个矩阵,但是如果我把(end, :) 放在表达式后面,它就不起作用了。

我知道这听起来很傻,但我想知道嵌套在这种情况下是如何工作的。

【问题讨论】:

  • 我不这么认为,我的意思是你为什么需要 1 行而不是 2 行
  • 我并不真正“需要”它,我只是想知道它是否可能。我是 MATLAB 新手,知道嵌套在 C++ 或 Java 中的工作原理,但找不到有关 Matlab 的任何信息。
  • 哦,好吧。我不完全确定它是否没有一点想法。
  • 你不能在 Matlab 中这样嵌套(不幸的是)。您通常必须显式创建一个新变量。如果您使用的是单元格,则可以通过使用 my_cell{1,2}(6,5) 访问包含在 my_cell 的容器 {1,2} 中的数据的 (6,5) 元素做得更好一些,但仅此而已去。

标签: matlab


【解决方案1】:

你可以跳过第一个 cumsum 而直接使用sum,因为cumsum 的最后一行相当于 sum 的结果:

>> mat_B=rand(5); 
>> cumsum(mat_B)

ans =

    0.2517    0.4522    0.8838    0.3751    0.2527
    0.6847    0.7778    1.3412    0.7487    0.8376
    1.5270    1.1579    2.1404    1.2327    1.3613
    1.7115    2.0444    2.2745    2.2021    1.5247
    2.2197    2.8056    2.3398    2.5442    2.0111

>> sum(mat_B)

ans =

    2.2197    2.8056    2.3398    2.5442    2.0111

因此

vec_C = cumsum(sum(mat_B));

应该做你想做的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2016-07-13
    相关资源
    最近更新 更多