Programmering

MATLAB

19. januar 2015 af 09xcc

Hej,

kan nogen hjælpe med at tyde denne linje fra Matlab? eksempelvis, hvorfor skrives der 'first', min(x(:)) osv.?

maxIndex = find(x==min(x(:)),1,'first');

Linjen er en del af dette udtryk:

% Der laves en nul-matrice, svarende til størrelsen på den givne data.Herfra trækkes en i værdi i rækkerne. 
    NewGrades = zeros( size(grades,1), size(grades,2)-1);
    for i=1:size(grades,1)
    x = grades(i,:);
    maxIndex = find(x==min(x(:)),1,'first');
    x(maxIndex) = [];
    NewGrades(i,:) = x;
    gradesFinal = mean(NewGrades,2);
    end
    % vi kalder funktionen roundGrade ind i funktionen.
    gradesFinal = roundGrade(gradesFinal)


Brugbart svar (0)

Svar #1
19. januar 2015 af Therk

Jeg har aldrig arbejdet i MATLAB, men tillad mig at komme med et bud:

min(x(:)) betyder vel at den skal finde minimum over vektoren x.

En hurtig Googlesøgning gav at find(x==min(x(:)),1,'first') finder den første værdi, hvor indicet har minimum. I det tilfælde her er det sikkert for at finde den første indgang, som tager minimum.


Brugbart svar (0)

Svar #2
19. januar 2015 af Keal (Slettet)

x(:) laver x om til en column vector. Det er sådan set ikke nødvendigt her. Argumentet 'first' er heller ikke nødvendigt da det er default i find, men det gør det klart hvor man starter søgningen.

Det er i øvrigt unødvendigt at have linjen "gradesFinal = mean(NewGrades,2);" inden i for-loopet. Sæt det i stedet uden for for-loopet så du sparer nogle beregninger.


Skriv et svar til: MATLAB

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.