Eval i matlab

Eval i matlab
Denne artikkelen vil forklare hvordan du bruker eval () -funksjonen i MATLAB.

Denne funksjonen kan være et utmerket verktøy, men bruken av den skal reserveres for eksepsjonelle tilfeller. Hvis mulig, bør alternative alternativer velges, da bruken av dem kan forårsake flere ulemper og problemer under utførelsen.

Nedenfor tar vi en detaljert titt på syntaks-, inngangs- og utgangsargumentene, og dataene denne funksjonen godtar. Du vil også finne en detaljert beskrivelse av denne funksjonen og dens løsninger, med kodebiter og bilder som forklarer hvordan du bruker den trinn for trinn.

MATLAB EVAL FUNCTION SYNTAX

eval ('exp')

Beskrivelse av MATLAB EVAL -funksjonen

Matlabs evalfunksjon evaluerer et gitt uttrykk i “exp” og returnerer resultatet i “a”. Konseptuelt konverterer eval () -funksjonen teksten du skriver til inngangsstrengen til kode som utfører og returnerer resultatene. Denne funksjonen gir utmerket fleksibilitet fordi den tillater flere utgangsresultater, og inngangsargumentene kan evaluere uttrykk og funksjoner fra MATLAB -biblioteket og de som er opprettet av programmereren. Inngangsargumentet til denne funksjonen må være en streng som inneholder uttrykkens eksplisitte uttrykk for å bli evaluert eller implisitt av en tegnvektor. Når vi kaller eval () -funksjonen med uttrykk som returnerer flere resultater, må de være vedlagt i firkantede parenteser og atskilt med komma.

Når du bruker eval () for å evaluere uttrykk eller funksjoner som ikke tidligere er spesifisert av programmereren, husk at alt som er lagt inn som en streng blir en del av koden. Feil håndtering av denne inngangen kan føre til feil eller unntak.

I de følgende eksemplene vil vi evaluere forskjellige funksjoner og inngangsuttrykk med eval () -funksjonen og implementere bruken av dem. Vi vil også vise deg løsninger som lar deg oppnå de samme resultatene uten å bruke denne funksjonen, som gir løsninger og er veldig fleksibel. Dette kan imidlertid også føre til betydelige ulemper.

Hvordan evaluere et enkelt uttrykk med MATLAB eval () -funksjon

Deretter vil vi se flere enkle eksempler der vi implementerer evalfunksjonen for å evaluere uttrykk eller samtaler til enkle funksjoner. Følgende utdrag evaluerer et divisjonsuttrykk av en av b.

a = 23;
B = 5;
eval ('a ./ b ')


I dette tilfellet returnerer eval () resultatet av å dele a med b.


I det følgende utdraget evaluerer eval () et uttrykk som bruker en MATLAB -bibliotekfunksjon for å produsere en rekke av dem:

a = 5;
eval ('Ones (a)')


Dette er de enkleste måtene å bruke funksjonen. Som vi kan se, blir strengkarakteren vi sender inn inngangsargumentene konvertert til kodelinjer for å returnere et resultat.


Deretter vil vi lage en applikasjon som evaluerer uttrykk og viser resultatene på skjermen.

Bruksområde for evaluering av uttrykk med evalfunksjonen til MATLAB

I dette eksemplet vil vi lage en enkel konsollapplikasjon for å evaluere uttrykk med eval (). Dette enkle verktøyet kan raskt analysere og evaluere uttrykkene vi spesifiserer som inngangsargumenter når vi bruker denne funksjonen. Denne applikasjonen består av fire kodelinjer. Det er en uendelig sløyfe som først bruker input () -funksjonen for å legge inn strengen som vil være uttrykket som skal evalueres. Denne strengen sendes som et inngangsargument for å evaluere ().

Nedenfor er koden for denne applikasjonen. Lag et skript, lim inn denne koden og trykk Run. Skriv deretter uttrykket du vil evaluere og trykke ENTER, ved ledeteksten. Husk at eval () bare aksepterer strenger i inngangsargumentene, så uttrykk bør lukkes i enkelt sitater. For å lukke applikasjonen, trykk CTRL+C.

mens 1
exp_1 = input ('Angi et uttrykk. For å avslutte applikasjonen, trykk CTRL+C.');
eval (exp_1)
slutt


Som vist i følgende figur bruker denne applikasjonen eval () -funksjonen og returnerer resultatet av uttrykket vi skriver inn via kommandokonsollen:

Risiko for å bruke eval () -funksjonen i MATLAB

Eval () -funksjonen gir interessante aspekter når det gjelder fleksibiliteten. Likevel kan det også ha flere ulemper som genererer feil, alvorlige unntak i systemet eller feilaktige resultater, så bruken skal være begrenset. Alternativer som gir mer sikkerhet og robusthet, bør implementeres i stedet.

Som vi har sett i beskrivelsen og tidligere eksempler, vil enhver tekst vi skriver inn i form av en streng i inngangsargumentene til evaluering () bli konvertert til kode og utført, som det konseptuelt er en gateway eller inngangsgrensesnitt for å legge inn brukerkommandoer inn i et allerede løpende program. Vi må være spesielt oppmerksom på dette fordi hvis vi lar denne døren være åpen, har vi ikke fullstendig eller forhåndsbestemt kontroll over hva som vil bli utført i systemet vårt på et tidspunkt i utgangspunktet. I tillegg kan uttrykk ofte komme i konflikt med navnene på allerede definerte variabler og gi feil resultater eller systemfeil. Disse feilene kan også oppstå på grunn av inkompatibiliteter i datatyper mellom variablene i uttrykket som blir evaluert og variablene definert i programmet.

Alternativer til MATLAB -evalueringsfunksjonen

Det er flere alternativer for å unngå å bruke eval () -funksjonen. Den ene er å lage en funksjon som løser uttrykket i stedet for å evaluere det med eval (). Dette gir oss muligheten til å jobbe med allerede forhåndsinnstilte variabler og også å kontrollere hva slags data variablene i dette uttrykket skal akseptere, som forhindrer feil eller unntak.

Konklusjon

I denne artikkelen viste vi deg hvordan du bruker eval () -funksjonen for å evaluere strenger og konvertere dem til kjørbare uttrykk som returnerer et resultat. Vi viste deg også noen av problemene som kan oppstå ved å bruke denne funksjonen og alternativene som MATLAB tilbyr for å oppnå samme resultat ved å bruke mer pålitelige metoder. For en bedre forklaring har vi laget noen praktiske eksempler som inkluderer fragmenter fra bildekoden som viser denne funksjonens implementering i MATLAB -miljøet. Vi har også laget en praktisk konsollapplikasjon som du kan bruke til å teste uttrykkene som vi vil bruke som inngangsargumenter når du implementerer denne funksjonen.