2013-07-22 75 views
1

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

我有一个<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, :)放在表达式后面,它将不起作用。

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

+0

我不这么认为,我的意思是为什么你需要1行而不是2 – MZimmerman6

+0

我并不真的“需要”它,我只是想知道是否有可能。我是MATLAB新手,知道嵌套如何在C++或Java中工作,但找不到有关Matlab的任何内容。 – Schnigges

+0

哦,好的。我不完全确定它是没有一点思考的。 – MZimmerman6

回答

6

你可以跳过第一cumsum,只是用sum,因为cumsum最后一行相当于总和的结果:

>> 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));

应该做的事情,你想。