我遇到以下任务的问题。我有一个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,所以我无法使用我发现可能有用的花哨功能。
答案 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