【发布时间】:2015-12-04 12:14:55
【问题描述】:
我有一个带有频率的数组 freq 和另一个带有值的 val。
val =[1 3 5 7];
freq=[2 3 3 2];
我想得到数组result。
result=[1 1 3 3 3 5 5 5 7 7];
我尝试获取result 的方法之一是:
freq=[2 3 3 2];
val=[1 3 5 7];
result=[];
for i=1:length(val);
result=[result repmat(val(i),1,freq(i))];
end
它可以工作,但是对于大型数组,如果我摆脱for-loop,我预计会获得一些性能提升。是否有任何内置功能?对于大型数组,您将如何计算 result?
【问题讨论】:
-
通过将
result预分配到result = zeros(1, sum(freq))并在循环中适当地处理索引,可以实现对循环的微小改进。
标签: performance matlab