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

MatLab-spørsmål


Anbefalte innlegg

Skrevet

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?
Videoannonse
Annonse
Skrevet (endret)

variablene du definerer skal på venstre side av likhetstegnet

Endret av Grønnsyre
Skrevet

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.

Skrevet

Prøv og kjør koden min du, den funker.

Haha, fancy! pent laget :) men har du noe råd til utbedring av min kode? Det står i øvingen at vi skal løse den vha. løkke.

Skrevet (endret)

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
Skrevet (endret)

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
Skrevet (endret)

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

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...