填充数组,其中一部分线性增加,其余部分被截断

时间:2016-01-18 16:27:16

标签: arrays matlab

我正在尝试使用值填充大小为1 x 200的数组。我希望数组的填充值为0到216,步长为6,然后保持数值的剩余部分的值为常数(216)。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

一种方法是最初以6为步长创建一个0到216的数组,然后连接216s的数组,直到达到200个值。

类似的东西:

out = 0:6:216;
N = 200;
out(end+1:end+N-numel(out)) = 216;

另一种方法是创建200个值216,然后填充从1到216/6 = 36替换数组的值并添加1,因为我们包括0;用所需的数组填充:

N = 200; stop = (N/6) + 1;
out = 216*ones(1,N);
out(1:stop) = 0:6:216;

最后,另一种方法是创建一个从0到200的数组,将所有大于36的值截断为36,然后将结果乘以6:

N = 200;
out = 0:N;
out(out > 36) = 36;
out = 6*out;

...至于完整性,您可以使用min 1 执行此操作:

out = min(0:199,36)*6;

两个参数min调用输出两个兼容大小数组之间每个元素的第一个和第二个输入的最小值。如果任何输入是常量,则将该常量与数组中的所有元素进行比较。这段代码的解释是生成一个从0到199的数组,然后是我们保留的任何小于36的值,但是任何更大的值都保持在36.然后我们将结果乘以6得到结果。

1:在删除答案之前,此答案的信用将转至用户Stewie Griffin。我决定将其完整化。

答案 1 :(得分:1)

arr = min(0:6:(6*199),216);

应该有效 或者:

arr = min((0:199)*6,216);
相关问题