MATLAB:快速创建索引向量
我有一个变量distr=[0310102];,我有一个变量full,它应该与I的分布时间I相反,对于所有I 在本例中,我希望:MATLAB:快速创建索引向量,matlab,vector,vectorization,Matlab,Vector,Vectorization,我有一个变量distr=[0310102];,我有一个变量full,它应该与I的分布时间I相反,对于所有I 在本例中,我希望: full=[2 2 2 3 5 5]; 因为Distric2=3,所以是3x2,依此类推 当然,我可以在for循环中完成: 但这是非常缓慢的。你知道一种快速的方法吗,使用MATLAB令人敬畏的面向数组的风格?谢谢 不确定,但也许这会奏效。我无法检查它,因为我目前没有MATLAB: full_tmp = arrayfun(@(i,n) i*ones(1,n),1:len
full=[2 2 2 3 5 5];
因为Distric2=3,所以是3x2,依此类推
当然,我可以在for循环中完成:
但这是非常缓慢的。你知道一种快速的方法吗,使用MATLAB令人敬畏的面向数组的风格?谢谢 不确定,但也许这会奏效。我无法检查它,因为我目前没有MATLAB:
full_tmp = arrayfun(@(i,n) i*ones(1,n),1:length(distr),distr,'uniformoutput',false);
full = cat(2,full_tmp{:});
哦,是的,谢谢你!!您需要运行长度解码。按如下方式使用repelem:result=repelem1:numeldistr,distr;。或者查看其他方法的链接问题和答案。啊,这是正确的名称,我无法找到结果,因为我不知道如何调用此属性。谢谢,这很有帮助,特别是性能测试!
full_tmp = arrayfun(@(i,n) i*ones(1,n),1:length(distr),distr,'uniformoutput',false);
full = cat(2,full_tmp{:});