matlab: случайная комбинация матриц - PullRequest
1 голос
/ 21 марта 2012

допустим, у меня есть две матрицы разного размера:

a = zeros(1,100);
b = ones(1,200);

теперь я хочу объединить их вместе. Хитрость в том, что я хочу смешивать их случайным образом, но с определенным, как это назвать ... хм, время жизни каждой группы, с нормальным распределением.

поэтому вместо случайного 010010101010001010 .. Я хочу установить для этого параметра «время жизни» значение f.ex. 4, и в результате получилось что-то вроде

00001111000111110000000011110000

Другими словами, я должен разделить его на группы нулей и единиц. Средний размер одной группы будет 4 (но также будут группы с 2, 3 или 7, вы понимаете, о чем я). Есть идеи? Спасибо

1 Ответ

0 голосов
/ 21 марта 2012

Нет аккуратного способа сделать это, вам нужно будет создать способ сделать это.

Я бы посмотрел на функцию Пуассона для вашего выбора, смешивая их вместе, хотя если высделайте это с массивами разных размеров, у вас в конце будут странные вещи.

По сути, я бы сделал что-то подобное.Обратите внимание, что этот код, вероятно, не будет работать, но он должен по крайней мере дать вам стартовую позицию.Я также позволю вам выяснить, как их объединить, когда вы превысили длину матрицы.

c=zeros(length(a)+length(b))
a_index=1;
b_index=1;
c_index=1;
while(a_index<length(a) && b_index<length(b))
    a_rnd=poissrnd(4);
    b_rnd=poissrnd(r);
    c(cindex:(cindex+a_rnd))=a(a_index:(a_index+a_rnd));
    c(cindex:(cindex+b_rnd))=b(b_index:(b_index+b_rnd));
    a_index=a_index+a_rnd;
    b_index=b_index+b_rnd;
end
...