非常简单的问题,但我没有找到任何东西......
我必须将我的代码拆分到不同的部分并按以下方式运行,因为有些矩阵是从左到右构建的,有些是从右到左构建的,通过向后归纳。例如,如果我将它分成3个部分,我将按以下顺序运行这些部分:
1, 2, 3,
1, 2,
1,
1, 2,
1, 2, 3.
所以我需要一个向量[1,2,3,1,2,1,1,2,1,2,3]。但由于部分的数量远大于3,我想建立一个通用的矢量:
1 : noSections
1 : noSections - 1
...
1
...
1 : noSections
我该怎么做?
答案 0 :(得分:3)
您可以使用arrayfun
,这对您的工作非常好。
cell2mat(arrayfun(@(x)1:x, [n:-1:1 2:n], 'UniformOutput', false))
说明:
[n:-1:1 2:n] % create the vector for the last element of each row, i.e. the vector [n, n-1, ..., 1, 2, ..., n]
@(x)1:x % Generate a 1:x vector for each x, this is done for each element of the previous vector
对于你的例子:
n = 3;
cell2mat(arrayfun(@(x)1:x, [n:-1:1 2:n], 'UniformOutput', false))
ans =
1 2 3 1 2 1 1 2 1 2 3