Untitled

 avatar
unknown
matlab
10 days ago
1.9 kB
4
Indexable
function accessiPerOra = calcolaNumeroAccessiOrari(matriceAccessi)

    accessiPerOra = zeros(1,12);
    % accessiPerOra = [0 0 0 0 0 0 0 0 0 0 0 0]

    for i = 1:size(matriceAccessi, 1)

        minuti = matriceAccessi(i,2);
        ora = floor(minuti/ 60) + 7;

        if ora >= 7 && ora < 19
            accessiPerOra(ora-6) = accessiPerOra(ora-6) +1;
        end
    end
end

function [orePicco, accessiMedi, oreMinimo] = calcolaPicco(accessiPerOra)

%accessiPerOra = [10 25 30 15 20 18 12 8 5 15 22 14];
% Indice:         1  2  3  4  5  6  7  8 9 10 11 12
% Ora reale:      7  8  9 10 11 12 13 14 15 16 17 18

    maxAccessi = max(accessiPerOra); % 30
    orePicco = find(accessiPerOra == maxAccessi);
    orePicco = orePicco + 6;

    accessiMedi = mean(accessiPerOra);

    minAccessi = min(accessiPerOra);
    oreMinimo = find(accessiPerOra == minAccessi) + 6;
end
    
    
load('acessiAreaC.mat', 'giorno1', 'giorno2');

function datiValidi = verificaDati(matrice)

    if size(matrice, 2) ~= 2
        reeturn false;
    end

    oreValidi = matrice(:, 2) >= 0 & matrice(:, 2) <= (19-7) *60;
    matrice = matrice(oreValidi, :);

    return true;
end

if ~verificaDati(giorno1) ||  ~verificaDati(giorno2)
    print('Dati non validi nelle matrici di input');
end

accessiOra1 = calcolaNumeroAccessiOrari(giorno1);
accessiOra2 = calcolaNumeroAccessiOrari(giorno2);


[orePicco1, mediaAccessi1, oreMin1] = calcolaPicco(accessiOra1);
[orePicco2, mediaAccessi2, oreMin2] = calcolaPicco(accessiOra2);


ore = 7:18; %[7 8 9 10 11 12 13 14 15 16 17 18]
accessiOra1 = [10 15 30 25 20 18 12 8 5 15 22 14];
accessiOra2 = [12 18 25 28 22 15 10 7 6 18 20 12];

plot(ore, accessiOra1, 'b-', ore, accessiOra2, 'r--')

xlabel('Ora del giorno')
ylabel('Numero di accessi')
title('Accessi Area C')
legend('Giorno 1', 'Giorno 2')
grid on

matriceAccessi = [
    1234, 30;
    5678, -10;
    9012, 95;
    3456, 800; 
    7890, 85;
];








Leave a Comment