You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Du har begynt på et prosjekt i et fag hvor du skal analysere forekomsten av Pokémon Go-monstre i Trondheim. I prosjektet er et område av Trondheim delt i et rutenett, og prosjektdeltakerne loggfører alle gangene de støter på forskjellige Pokémon. Disse dataene lastes opp til en server, hvor de behandles av et program skrevet i Matlab.

Du skal jobbe med å utvide analysekoden, som er skrevet av tidligere prosjektstudenter. Du irriterer deg umiddelbart over at dataene i programmet er samlet i cellelister, som illustrert under. Du bestemmer deg for å gjøre noe med saken.


a) Lag en funksjon som konverterer data for én forekomst fra en celleliste til en struct med et passende format.
b) Deler av programmet jobber på samlinger av forekomstdata. Lag en funksjon som konverterer en cellematrise med forekomstdata til et passende alternativ som bruker structs. Scriptet opprett_pokemon.m lager en cellematrise du kan teste funksjonen med.

 Utdelt kode

opprett_pokemon.m
pkms_celle = { 'Charmander', 8, 'N',  7; 
               'Pikachu',   10, 'J',  8; 
               'Dewgong',    1, 'A',  1; 
               'Exeggutor',  1, 'S', 10 } 

 

Videoforklaring (mm:ss) 

Del 1 (7:30)Del 2 (mm:ss)Del 3 (mm:ss)
  
Oppgaveintroduksjon, og løsning av oppgave a).  

Løsningsforslag

forekomst_struct.m
function retur = forekomst_struct(forekomst_celleliste)
    retur.navn = forekomst_celleliste{1};
    retur.antall = forekomst_celleliste{2};
    retur.pos = struct('rad', forekomst_celleliste{3}, ...
                       'kol', forekomst_celleliste{4});
 
	%% Kan også lage siste felt gradvis:
    % retur.pos.rad = forekomst_celleliste{3};
    % retur.pos.kol = forekomst_celleliste{4};
end 
forekomster_struct.m
function retur = forekomster_struct(forekomst_cellematrise)
    retur.navn = forekomst_cellematrise(:, 1)';
    retur.antall = [forekomst_cellematrise{:, 2}];
    retur.pos.kol = forekomst_cellematrise(:, 3)';
    retur.pos.rad = [forekomst_cellematrise{:, 4}];
end 

 

 

  • No labels