2017-02-15 6 views
1

私は自分のコードを昇順に整理しています。私はデータの正規分布を行う必要があります。私はランダム8とランダム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

問題は、数字ではなく文字列をソートすることです。そういうわけで、あなたが見る結果を得ているのです。 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 ] 
関連する問題