1
的矢量我有一個變量distr=[0 3 1 0 2];
,我有一個變量full
應該contrain distr(i)
次i
,所有i
。MATLAB:快速創建索引
在這個例子中,我想:
full=[2 2 2 3 5 5];
因爲distr(2)=3
,因此3X 2
,等等。
當然,我可以做一個for
-loop:
full=zeros([1,sum(distr)]);
cc=1;
for i=1:length(distr)
curr=distr(i);
full(cc:cc+curr-1)=i*ones([1,curr]);
cc=cc+curr;
end
但速度很慢。你知道一個快速的方法,使用MATLAB的真棒陣列導向風格嗎?謝謝!
你想__run長度解碼___。使用'repelem'如下:'result = repelem(1:numel(distr),distr);'。或者查看其他方法的鏈接問題和答案。 –
啊,那是正確的名字,我無法找到結果,因爲我不知道如何調用這個屬性。謝謝,這有助於 - 特別是那裏的性能測試! – NicoDean