2015-07-08 2 views
2

У меня есть вектор в Matlab A измерения mx1, сообщающий натуральные целые числа от 1 до m в порядке возрастания, например. A=[1 2 3]'.Kronecker с переменным размером в Matlab?

Пусть B является вектором измерения mx1, в котором сообщаются некоторые натуральные целые числа, большие или равные нулю, например. B=[1 3 0]'.

без использования петли, я хочу построить вектор C размерностей sum_i(B(i)) полученного путем перечисления каждого A(i)B(i) раз. В примере C=[1 2 2 2].

+0

Я думаю, что это то, что вы хотите: http://stackoverflow.com/questions/28501418/run-length-decoding-in-matlab – Daniel

ответ

1

Вы можете сделать это с помощью arrayfun

A = [1 2 3]'; 
B = [1 3 0]'; 
m = 3; 
C = cell2mat(arrayfun(@(x) ones(B(x),1)*A(x), 1:m, 'UniformOutput', 0)'); 

C = 

    1 
    2 
    2 
    2 
Смежные вопросы