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

时间:2010-09-16 17:31:20

标签: arrays matlab concatenation

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

1 2 3 4 5 11 12 13 14 15 16 17 18 19 20

所以,我试过了:

a = 1:5,11:20

但这没效果。

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

1 个答案:

答案 0 :(得分:5)

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

a = [1:5 11:20];

或者减少硬编码:

startIndex = 6;  %# The starting index of the 5 elements to remove
a = [1:startIndex-1 startIndex+5:20];

您可能还想查看以下相关功能:HORZCATVERTCATCAT

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

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

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

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