7 svar
430 visningar
johhbi22 16 – Fd. Medlem
Postad: 10 feb 2020 20:36

anropa funktion en till gång i en funktion

Hejsan!

Låt oss säga att jag har en funktion och jag vill anropa den igen med ett annat värde i koden.

function y = berakna(x)

y = (x.^2) +4x;

t = berakna(30)-berakna(15)

   end

När jag försöker i mitt fall lägga till ett anrop av funktionen i koden så får jag : 

Out of memory. The likely cause is an infinite recursion within the program.

Error in integralCalc/iterateScalarValued 
[t,w] = u(x); % Transform back to the original domain.

Går det att skriva det på något annat sätt ?

Dr. G 9479
Postad: 10 feb 2020 20:39 Redigerad: 10 feb 2020 20:39

Flytta raden med t utanför funktionen.

function y = berakna(x)

y = (x.^2) +4x;

end

t = berakna(30)-berakna(15)

johhbi22 16 – Fd. Medlem
Postad: 10 feb 2020 20:45
Dr. G skrev:

Flytta raden med t utanför funktionen.

function y = berakna(x)

y = (x.^2) +4x;

end

t = berakna(30)-berakna(15)

Jag testade det och fick detta felmeddelande;

Error: File: berakna.m Line: 8 Column: 4
This statement is not inside any function.
(It follows the END that terminates the definition of the function "berakna".)

Dr. G 9479
Postad: 10 feb 2020 20:54

y-raden saknar ett multiplikationstecken och bör vara

y = (x.^2) +4*x;

Det kan möjligtvis generera problem om din .m-fil har samma namn som funktionen. Prova att anropa funktionen från en annan fil. (Ta bort t-raden och lägg in den i en ny fil.)

johhbi22 16 – Fd. Medlem
Postad: 10 feb 2020 20:57
Dr. G skrev:

y-raden saknar ett multiplikationstecken och bör vara

y = (x.^2) +4*x;

Det kan möjligtvis generera problem om din .m-fil har samma namn som funktionen. Prova att anropa funktionen från en annan fil. (Ta bort t-raden och lägg in den i en ny fil.)

Går det inte att anropa samma funktion i samma skript ? 

Dr. G 9479
Postad: 10 feb 2020 21:01

Jo, byt namn på antingen funktionen eller .m-filen så bör det gå. 

I länken nedan så går det (i Octave).

https://rextester.com/NDE83946

johhbi22 16 – Fd. Medlem
Postad: 10 feb 2020 21:13
Dr. G skrev:

Jo, byt namn på antingen funktionen eller .m-filen så bör det gå. 

I länken nedan så går det (i Octave).

https://rextester.com/NDE83946

Tack för länken och ser att det fungerar där men inte på matlab. Det är tänkt at jag ska göra båda på samma script och inte behöva byta namnet på funktionen egentligen.  

Dr. G 9479
Postad: 10 feb 2020 22:31

I gamla versioner av matlab så var man tvungen att ha funktioner i separata filer (med undantag från anonyma funktioner). Det är dock fixat sedan ett tag tillbaka. 

Eftersom jag inte har tillgång till matlab nu så kan jag inte testa vad som fungerar och inte. 

Har du provat att byta namn på funktionen och/eller .m-filen?

Svara
Close