2017-02-15 3 views
1

У меня есть код в порядке возрастания. Мне нужно сделать нормальное распределение данных. Мне нужно иметь random8 и random 24. Я сомневаюсь, что массив малых средних и больших может выполнять нормальное распределение, а также находить среднее и стандартное отклонение. Поэтому, как я могу сделать для случайных 8 и random24 Ниже приведены мои коды:Как рассчитать отклонение стойки и среднее значение

symbols = {'SMALL', 'MEDIUM', 'LARGE'}; 
    range = 101; % <-- Or 101 if you want from 0 to 100 with 100 included 
    rndInd = randi(numel(symbols), range ,1); 
    st = symbols(rndInd); 
    strjoin(st); 
    random24 = strtrim(cellstr(num2str(randi(24, range, 1)))); 
    random8 = strtrim(cellstr(num2str(randi(8, range, 1)))); 
    b = num2cell(sort(randi(24, range, 1))); 
    B = cellfun(@num2str, b, 'UniformOutput', false); 
    %B = sort(random24) 
    st = [ st' B random8 ] 

    %% MEAN 

    mean8=mean(random8); 
    fprintf('Mean of Random 8 parking Duration is %f',mean8); 

     mean24=mean(random24); 
     fprintf('Mean of Random 24 Hours is %f',mean24); 

     %% Standard deviation 
     standDev8= std(random8); 
     fprintf('Standard Deviation of Random 1-8 Hours of parking Duration    is %f',standDev8); 
     figure(1); 
     histogram(random8); 
     title('Histogram of Data for Random 1-8 Hours of parking Duration') 

     standDev24= std(random24); 
     fprintf('Standard Deviation of Random 24 Hours is %f',standDev24); 
     figure(2); 
     histogram(random24); 
     title('Histogram of Data for Random 24Hours ') 

Сообщение об ошибке я получаю Неопределенная функция «сумма» для входных аргументов типа «клетка».

 Error in mean (line 116) 
     y = sum(x, dim, flag)/size(x,dim); 

     Error in RANDOM (line 15) 
     mean8= mean(B); 

ответ

1

Проблема в том, что вы сортируете строку, а не цифру. Вот почему вы получаете результат, который видите. Одним простым решением было бы сначала отсортировать массив чисел, а затем преобразовать его в список строк.

Итак, ваша первая часть сценария может быть неизменным:

symbols = {'SMALL', 'MEDIUM', 'LARGE'}; 
N = 101; % <-- Or 101 if you want from 0 to 100 with 100 included 
rndInd = randi(numel(symbols), N ,1); 
st = symbols(rndInd); 
strjoin(st); 

Вы можете оставить следующую строку без изменений, а если вам не нужно ничего делать с ним:

rnd8 = strtrim(cellstr(num2str(randi(8, N, 1)))); 

Тогда вы можете сделать что-то подобное (возможно, там есть лучшие альтернативы):

b = num2cell(sort(randi(24, N, 1))); 
B = cellfun(@num2str, b, 'UniformOutput', false); 

И t держите свою последнюю линию, чтобы проверить выход:

st = [ st' B rnd8 ] 
Смежные вопросы