20 svar
122 visningar
I am Me är nöjd med hjälpen
I am Me 682
Postad: 28 okt 2022 21:58 Redigerad: 28 okt 2022 22:01

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.

Fermatrix 7841 – Fd. Medlem
Postad: 28 okt 2022 22:01

Jag ändrade delforum till MATLAB istället för C. :)

I am Me 682
Postad: 28 okt 2022 22:02

oj såg inte att jag har skrivit på fel plats. TACK !

Fermatrix 7841 – Fd. Medlem
Postad: 28 okt 2022 22:12 Redigerad: 28 okt 2022 22:12

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?

I am Me 682
Postad: 28 okt 2022 22:15
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. 

Fermatrix 7841 – Fd. Medlem
Postad: 28 okt 2022 22:19

Ignorera det bara. :)

Du kan ju alltid tilldela en variabel rowValues om så är fallet.

I am Me 682
Postad: 28 okt 2022 22:35

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." 

Fermatrix 7841 – Fd. Medlem
Postad: 28 okt 2022 22:36 Redigerad: 28 okt 2022 22:36

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.

I am Me 682
Postad: 28 okt 2022 22:43

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.

Fermatrix 7841 – Fd. Medlem
Postad: 28 okt 2022 22:50

Ah, du har ju en clear i början av skriptet, den måste bort omedelbart. :)

I am Me 682
Postad: 28 okt 2022 22:53 Redigerad: 28 okt 2022 22:54

Varför? clear rensar bort allt som finns innan ellehur? 

I am Me 682
Postad: 28 okt 2022 22:54

Ja nu funkar den! Men när ska man ha clear med i funktionen?

Fermatrix 7841 – Fd. Medlem
Postad: 29 okt 2022 10:07

När du använder clear så blir det ett skript, så det blir problematiskt.

I am Me 682
Postad: 29 okt 2022 10:19

Hmm förstår inte riktigt vad ett skript är. I Google står det " (script) – program som utför uppgifter i andra program ".

I am Me 682
Postad: 29 okt 2022 10:30

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? 

Fermatrix 7841 – Fd. Medlem
Postad: 29 okt 2022 11:08 Redigerad: 29 okt 2022 11:11

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.

Fermatrix 7841 – Fd. Medlem
Postad: 29 okt 2022 11:14 Redigerad: 29 okt 2022 11:14

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.

I am Me 682
Postad: 29 okt 2022 12:16

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. 

Fermatrix 7841 – Fd. Medlem
Postad: 29 okt 2022 12:18

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. :)

I am Me 682
Postad: 29 okt 2022 12:26

Taack nu blev det mer tydligt. Var i matlab kallas för konsol? 

Fermatrix 7841 – Fd. Medlem
Postad: 29 okt 2022 12:42

"Command Window"

Det i den röda rutan

Svara Avbryt
Close