Gå til innhold
Trenger du skole- eller leksehjelp? Still spørsmål her ×

MatLab-spørsmål


Anbefalte innlegg

Hei. Jeg trenger litt råd her. Har laget en funksjon som tar inn to parametere - en vektor med tall, samt et tall. Vektoren skal returnere to vektorer, den ene med alle elementene som er mindre enn dette tallet og den andre med alle elementene som er større eller lik tallet.

 

Dette er det jeg har gjort:

 

function [vektor1, vektor2] = separate(x,tall)
vektor1 = [];
vektor2 = [];
for i = 1:length(x);
if x(i) < tall
x(i) = vektor1;
else
x(i) = vektor2;
end
end
end
----
Noen tips?
Lenke til kommentar
Videoannonse
Annonse

variablene du definerer skal på venstre side av likhetstegnet

Får bare error når jeg forsøker dette..?

 

function [ X,Y ] = ballesaft( tall,V )
X = V(V>=tall); Y=V(V<tall);
end

Ja, men hvordan skal jeg gjøre dette i praksis? Jeg vil liksom at de to tomme vektorene mine skal oppdateres fortløpene, og skrives ut når løkken har iterert over alle elemtene i vektoren.

Lenke til kommentar

Tja, du gjør mye rart. Problemet ditt ligger i at du

har en tom vektor, men du sier ikke hvor tallene skal stå.

Eksempelvis vil følgende fungere

function [vektor1, vektor2] = separate(x,tall)

for i = 1:length(x);
    if x(i) < tall
        vektor1(i) = x(i);
    else
        vektor2(i) = x(i);
    end
end
Om en går igjennom koden linje for linje så sier jeg at om

jeg har x(i) < tall, så skal den fylle ut den i'te plassen i vektor1(i).

Merk at dette er horribelt tregt, og en bør lage tomme vektorer til å begynne med =) (prøv help zeros)

 

For å fjerne de tomme plassene er det flere ting du kan gjøre.

Men jeg kan jo la deg prøve først.

Endret av Nebuchadnezzar
Lenke til kommentar

Ok, takk. Jeg hadde tilsvarende funksjon tidligere (bare at jeg hadde byttet plass på vektorene og x'ene - altså jeg hadde x(i) = vektor1(i) og tilsvarende for den andre vektoren. Når jeg da kjørte funksjonen fikk jeg den index out of bounds feilmeldingen. Har du noen god forklaring på hvorfor dette skjer?

 

 

edit: ja, zeros-funksjonen prøvde jeg også. Problemet var bare at den lagde en matrise istedenfor en vektor.

Endret av mentalitet
Lenke til kommentar

Problemet ditt er at matlab leser koden fra venstre til høyre.

Altså sier du først at

vektor = []

altså har vektor ingen lengde, eller elementer. Den er tom.

Så sier du at

x(1) = vektor(1)

Du definerer altså x(1) til å være lik vektor(1)

men vektor(1) eksisterer ikke! Så du må heller definere

vektor(1) = x(1).

 

Og skriver du help zeros finner du og ut hvordan du

skal lage en vektor og ikke en matrise =)

Endret av Nebuchadnezzar
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...