0

我有一个包含九个元素的索引向量IDX = [1 2 1 3 4 3 1 2 1]。(在另一篇文章中,我询问了如何重复两个单独的向量 IDX1 和 IDX2,但这里我将所有元素都放在一个向量中)

该矩阵的前五个元素将根据 中的元素重复howMany1 = [3 2 2 1 2],接下来的四个元素将根据 重复howMany2 = [2 1 2 2]。所以结果是:a1 =[1 1 1 2 2 1 1 3 4 4]a2 = [3 3 1 2 2 1 1 ]。我怎样才能通过 MATLAB 将结果存储在一个单元格中的两个单独的矩阵中?这是我的代码,但我无法找出问题所在。感谢大家抽出宝贵的时间。

clear all
close all
clc

IDX = [1 2 1 3 4 3 1 2 1];
howMany1 = [3 2 2 1 2]; % howMany1 and howMany2 determine how many times each index in IDX should be repeated.
howMany2 = [2 1 2 2];

%%
howMany = {howMany1 howMany2};
a = cell(2,1)
m = 1
for k = 1:2
 for j=m:length(howMany)+m-1
     h = howMany{k};
     idx=IDX(j);
     a{k,1}= cell2mat(arrayfun(@(x,y) repmat(x,1,y),idx,h(j),'uniform',0))
 end
 m = m+length(h)
end
4

0 回答 0