用等效的可矢量化解决方案替换冒号运算符

时间:2014-11-13 02:39:13

标签: matlab octave

我目前的代码是这样的:

for offset = 0:0.9:max_offset :
    x = offset:step_size:max_value;

    [...]

end

我想向量化并删除for循环以使其更快,但如果我尝试将offset设为向量,则第二行上的冒号运算符相当于执行

x = offset(1):step_size:max_value;

获得所需结果的最有效方法是什么,即获取

x = [ 0:step_size:max_value;
      0.9:step_size:max_value;
      1.8:step_size:max_value; ... ]

假设我不知道max_offset,因此我想知道x中的行数?

1 个答案:

答案 0 :(得分:0)

由于每个向量的大小不同,因此它们不容易适合矩阵。你必须将它们放在一个单元格数组中,如下所示:

offset=0:.9:max_offset;
x=arrayfun(@(k) k:step_size:max_value,offset,'UniformOutput',false)

而不是引用x的{​​{1}}行作为矩阵,您可以x(i,:)来获取正确的向量。