jim*_*jim 5 matlab vectorization
我想构造一个接受输入n并给出向量的函数
[n n-1 n-2 ... n-n, n-1 n-2 ... n-n, ..., n-n]
//Example
input : n=3
output : [3 2 1 0 2 1 0 1 0 0]
Run Code Online (Sandbox Code Playgroud)
我知道如何使用循环来做到这一点,但我正在寻找一种在MATLAB中做到这一点的聪明方法
您可以使用repmat
几次重复矩阵,然后通过选择仅三角形部分tril
.像这样:
n=3;
x=repmat(n:-1:0,1,n+1);
result=x(tril(ones(n+1))>0)
Run Code Online (Sandbox Code Playgroud)
或者在一行中:
n=3;
getfield(repmat(n:-1:0,1,n+1),{reshape(tril(ones(n+1))>0,1,(n+1)^2)})
Run Code Online (Sandbox Code Playgroud)
此函数的结果是所需的输出:
result =
3 2 1 0 2 1 0 1 0 0
Run Code Online (Sandbox Code Playgroud)