如何在MATLAB中将数字范围连接成数组?

Nei*_*l G 1 arrays matlab concatenation

例如,我想要组合两个数字范围,如下所示:

1 2 3 4 5 11 12 13 14 15 16 17 18 19 20
Run Code Online (Sandbox Code Playgroud)

所以,我尝试过:

a = 1:5,11:20
Run Code Online (Sandbox Code Playgroud)

但那没用.

我还想以非硬编码方式执行此操作,以便缺少5个元素可以从任何索引开始.

gno*_*ice 5

对于您的示例,您需要使用方括号来连接两个行向量:

a = [1:5 11:20];
Run Code Online (Sandbox Code Playgroud)

或者减少硬编码:

startIndex = 6;  %# The starting index of the 5 elements to remove
a = [1:startIndex-1 startIndex+5:20];
Run Code Online (Sandbox Code Playgroud)

您可能还想查看这些相关功能:HORZCAT,VERTCAT,CAT.

还有一些其他方法可以做到这一点.首先,你可以先制作整个矢量,然后索引你不想要的元素并将它们删除(即将它们设置为空矢量[]):

a = 1:20;      %# The entire vector
a(6:10) = [];  %# Remove the elements in indices 6 through 10
Run Code Online (Sandbox Code Playgroud)

您也可以使用set操作来执行此操作,例如SETDIFF函数:

a = setdiff(1:20,6:10);  %# Get the values from 1 to 20 not including 6 to 10
Run Code Online (Sandbox Code Playgroud)