Performance MATLAB中的逆表函数

Performance MATLAB中的逆表函数,performance,matlab,Performance,Matlab,我有一个带有频率的数组freq,还有一个带有值的数组val val =[1 3 5 7]; freq=[2 3 3 2]; 我想获得数组结果 result=[1 1 3 3 3 5 5 5 7 7]; 我尝试获得结果的方法之一是: 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 它可以工作,但是对于大型阵列

我有一个带有频率的数组
freq
,还有一个带有值的数组
val

val =[1 3 5 7];    
freq=[2 3 3 2];
我想获得数组
结果

result=[1 1 3 3 3 5 5 5 7 7];
我尝试获得
结果的方法之一是:

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
-循环,我希望性能有所提高。这个有内置的功能吗?对于大型数组,您将如何计算
result

对于大型向量,您可以通过预分配
result
并同时更新多个单元格来获得一些性能。


可以这样做:

val = [1 3 5 7]
freq = [2 3 3 2]
res = repelem(val, freq)

res =

 1     1     3     3     3     5     5     5     7     7

通过将
result
预分配到
result=zero(1,sum(freq))
并在循环中适当处理索引,可以实现对循环的轻微改进。
val = [1 3 5 7]
freq = [2 3 3 2]
res = repelem(val, freq)

res =

 1     1     3     3     3     5     5     5     7     7