7 svar
65 visningar
johhbi22 20
Postad: 10 feb 2020

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 5223
Postad: 10 feb 2020 Redigerad: 10 feb 2020

Flytta raden med t utanför funktionen.

function y = berakna(x)

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

end

t = berakna(30)-berakna(15)

johhbi22 20
Postad: 10 feb 2020
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 5223
Postad: 10 feb 2020

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 20
Postad: 10 feb 2020
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 5223
Postad: 10 feb 2020

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 20
Postad: 10 feb 2020
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 5223
Postad: 10 feb 2020

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 Avbryt
Close