Har tenta tacksam för snabbt svar
uppgift:
Skriv en funktion selectRow som tar en matris data och en rad row som parameter och returnerar den angivna raden.
lösning:
function rowValues = selectRow(data, row)
% Returns given row from matrix data
rowValues = data(row, :);
end
vad är fel på funktionen?? Filnamnet ska ju bara samma som funktions namn för att det ska funka.
Jag ändrade delforum till MATLAB istället för C. :)
oj såg inte att jag har skrivit på fel plats. TACK !
Nu var det ett bra tag sedan jag pillade med MATLAB men är det inte så att den grinar eftersom du har en return value rowValues men du gör aldrig någonting med den?
Dracaena skrev:Nu var det ett bra tag sedan jag pillade med MATLAB men är det inte så att den grinar eftersom du har en return value rowValues men du gör aldrig någonting med den?
Ja men i uppgiften står inte att det ska göra något utan bara att den returnerar den angivna raden.
Ignorera det bara. :)
Du kan ju alltid tilldela en variabel rowValues om så är fallet.
Jag får igen samma problem. För en annan liknande uppgift jag får
"Error: File: selectRows.m Line: 2 Column: 23
Local function name must be different from the
script name."
Det verkar som att du har råkat döpa en funktion/variabel till samma namn som du döpt skriptet. Prova ändra namn på funktionen till något annat.
Nej det funkar inte :(
funktionen:
clear
function SumRow1row2 =Rows(data,row1,row2)
SumRow1row2= data(row1:row2, :)
end
Jag skriver i command window Rows([2:4; 1:3],1,2) men jag får samma meddelande, alltså Error: File: Rows.m Line: 2 Column: 23
Local function name must be different from the
script name.
Ah, du har ju en clear i början av skriptet, den måste bort omedelbart. :)
Varför? clear rensar bort allt som finns innan ellehur?
Ja nu funkar den! Men när ska man ha clear med i funktionen?
När du använder clear så blir det ett skript, så det blir problematiskt.
Hmm förstår inte riktigt vad ett skript är. I Google står det " (script) – program som utför uppgifter i andra program ".
Hittade även "Script är den enklaste typ en av M-filer. Kod som är skriven i en script-
fil körs rad för rad, precis som om du skulle ha matat in dem för hand på
kommandoprompten. Alla variabler som skapas i ett MATLAB script ligger
kvar i minnet efter att scriptet avslutats om man inte aktivt väljer att ta b ort
dem. "
Jag skriver alla koder i m-filer så betyder det att jag skapar script-filer?
Ja, du har skrivit funktionen i ett skript men du använder ju kommandotolken för att kalla på funktionen. Du kan inte ha en clear det första du gör.
skriv Clear i konsolen istället.
För att förtydliga.
Main funktionen sätts längst upp i skriptet och har samma namn som MATLAB filen. Så fort du sätter något kommando över main så är inte det längre din main-funktion utan blir en lokal funktion. Men lokala funktioner får inte heta samma sak som namnet på din fil och inte heller kan man kalla på lokala funktioner (finns en workaround mha handles) utanför skriptet, i exempelvis konsolen.
Aha ok, så jag kan inte skriva clear i början för att jag har skapat ett script-fil och om jag skriver clear i början av koden då blir main-funktionen en lokal funktion som man inte kan ge den samma namn som filensnamn.
Exakt. Notera, det gäller intr bara clear, utan om du skulle skriva x=3+9 så går det sönder. Main måste vara det absolut första i skriptet. :)
Taack nu blev det mer tydligt. Var i matlab kallas för konsol?
"Command Window"
Det i den röda rutan