Итак, я знаком с randsrc и могу создавать из случайного алфавита целых чисел с заданными вероятностями.Допустим, у меня есть этот алфавит
alphabet={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
prob=[0.08167 0.01492 0.02782 0.04254 0.12702 0.02228 0.02015 0.06094 0.06966 0.00153 0.00772 0.04025 0.02406 0.06749 0.07507 0.01929 0.00095 0.05987 0.06327 0.09056 0.02758 0.00978 0.02360 0.00150 0.01974 0.00074];
Обратите внимание: алфавит - это ячейка с размерами 1x26, а prob - двойной массив 1x26.
Я могу создать случайную строку, подобную этой
s = 'abcdefghijklmnopqrstuvwxyz';
%find number of random characters to choose from
numRands = length(s);
%specify length of random string to generate
sLength = 10;
%generate random string
randString = s(ceil(rand(1,sLength)*numRands));
Проблема с этим способом состоит в том, что я не могу найти способ принять вероятности в учет.Итак, что я пытался сделать, это:
randomString =randsrc(10,1,[alphabet; prob]);
Но это отображается в консоли:
Error using vertcat
Dimensions of arrays being concatenated are not consistent.
Consider converting input arrays to the same type before concatenating.
Error in test (line 8)
randomString = randsrc(10,1,[alphabet; prob]);
В этом случае, если я делаю:
alphabet = [097:122];
randsrc будет работать.
Но что бы я ни пытался, я не могу дать алфавит символов randsrc.Причина, по которой я хочу дать символьный алфавит randsrc, заключается в том, что мой алфавит может быть намного сложнее, чем первый, например:
alphabet = {'aa','ab','ac'...'az','ba','bb','bc'...);
В любом случае я могу заставить randsrc получить алфавит символов ине целое числоИли я должен попытаться создать свою собственную функцию для этого?
Заранее спасибо