使用n

时间:2015-09-02 12:54:04

标签: arrays matlab repeat

我遇到以下任务的问题。我有一个0的虚拟数组和2个相同大小的向量。例如:

array1 = zeros(750,1);
vector1 = [1;3;5];
vector2 = [100;250;400];

我希望按如下方式填充array1:

repeat element 1 in vector1 100 times
repeat element 2 in vector2 250 times
repeat element 3 in vector1 400 times

结果向量应该有7行1列。我尝试过使用repmat,但不能只输出1维。我也听说过bsxfun,但我从来没有得到我需要的数据。我很感激任何有用的建议。

我有Matlab 2013,所以我无法使用我发现可能有用的花哨功能。

2 个答案:

答案 0 :(得分:1)

array1(1:100) = vector1(1);
array1(101:350) = vector2(2);
array1(351:750)=vector1(3);

虽然为什么总长度2850超出了我的范围。

答案 1 :(得分:0)

可能是这样的:

    vector1 = [1;3;5];
    vector2 = [100;250;400];
    temp = linspace(1,sum(vector2),sum(vector2))';
    array1 = zeros(size(temp));

    for ii = 1:length(vector2)
        array1 = array1 + (temp <= sum(vector2(1:ii)) & not(array1))*vector1(ii);
    end
    clear temp ii