Studieavdelingen har lyst til å regne ut gjennomsnittskarakteren for studentene i forskjellige studieprogram. De planlegger å lage en matrise hvor karakterene for hver student er samlet i kolonner, og karakterene i et gitt fag er oppgitt langs radene. Det er allerede samlet inn testdata i scriptet karakterdata.m. Lag en funksjon som tar inn en matrise med karakterer og en kolonnevektor med antall studiepoeng for hvert fag, og som returnerer en vektor som inneholder snittkarakteren for hver student. Man kan regne ut vektet gjennomsnitt med følgende formel: 

Utdelt kode

karakterdata.m
karakterer = [
    4, 3, 4, 3;
    4, 4, 4, 4;
    4, 4, 4, 4;
    4, 1, 2, 4;
    4, 4, 4, 4;
    3, 5, 6, 4;
    3, 3, 4, 6;
    3, 5, 4, 2 ];
studiepoeng = [ 
    7.5;
    7.5;
    7.5;
    15;
    7.5;
    7.5;
    15;
    7.5 ]; 

Videoforklaring (20:39)

Del 1 (6:31)Del 2 (6:34)Del 3 (7:34)
Introduksjon og forklaring av problemet, og definisjon av funksjonens ytre.Løsning med for-løkke og preallokering.Vektorisert løsning.

 

Løsningsforslag

karaktersnitt.m
function retur = karaktersnitt(karaktermatrise, studiepoeng)
    retur = zeros(1, size(karaktermatrise, 2));
    for i = 1:length(retur)
        % Regn ut verdien til retur(i)
        karakterer = karaktermatrise(:, i);
        vektede_karakterer = karakterer .* studiepoeng;
        retur(i) = sum(vektede_karakterer) / sum(studiepoeng);
    end
end
karaktersnitt.m
function retur = karaktersnitt(karaktermatrise, studiepoeng)
    tellere = studiepoeng' * karaktermatrise;
    nevner = sum(studiepoeng);
    retur = tellere ./ nevner;
end
  • No labels