How do I stop a MATLAB ® command?

Sådan Stopper du en MATLAB-kommando Effektivt

01/03/2019

Rating: 4.66 (14459 votes)

At arbejde i MATLAB® indebærer ofte at køre komplekse beregninger og scripts, der kan tage alt fra sekunder til timer at fuldføre. Men hvad gør man, når man indser, at et script er kørt i en uendelig løkke, bruger forkerte data, eller man simpelthen har brug for at afbryde processen af en anden årsag? At vide, hvordan man effektivt stopper en kørende kommando, er en fundamental færdighed for enhver MATLAB-bruger. Denne guide vil udførligt gennemgå de forskellige metoder til at stoppe eksekvering, fra den mest basale tastaturgenvej til mere avancerede teknikker for baggrundsprocesser, så du kan genvinde kontrollen over dit arbejdsmiljø uden unødig frustration.

What does quit force do in MATLAB?
quit force bypasses finish.m and terminates MATLAB. Use this syntax to override the finish script if the script does not let you quit. quit(code) returns the specified value as the MATLAB exit code. quit(code,"force") bypasses finish.m and terminates MATLAB with the exit code. Example: quit(0,"force") Exit code, specified as a signed integer.
Indholdsfortegnelse

Den Primære Metode: Tastaturgenvejen Ctrl+C

Den hurtigste og mest almindelige måde at stoppe en kørende MATLAB-kommando på er ved at bruge tastaturgenvejen Ctrl+C. Når du trykker på denne kombination i kommandovinduet, sender du et afbrydelsessignal til MATLAB's fortolker. I de fleste tilfælde vil dette øjeblikkeligt stoppe den igangværende opgave og returnere kontrollen til dig i kommandolinjen. Processen er designet til at være så smidig som muligt, så du hurtigt kan rette din kode og køre den igen.

På Apple Macintosh-platforme er den tilsvarende genvej Command + . (Command-tasten og punktum-tasten). Nogle systemer, især Windows, reagerer også på Ctrl+Break, som kan være en mere 'hård' afbrydelse på systemniveau, men for MATLAB's vedkommende opnår den typisk det samme resultat som Ctrl+C.

Det er vigtigt at forstå, at afbrydelsen ikke sker midt i en atomisk operation. MATLAB vil typisk færdiggøre den aktuelle linje kode, før den stopper. Dette sikrer, at programmet efterlades i en mere stabil tilstand, end hvis det blev stoppet brat midt i en kritisk beregning.

How do I stop a program from executing in MATLAB?
This will abort any program's execution. Take the cursor to the MATLAB's command window and then press Ctrl+c. Though there are two scenarios when even Ctrl+c cannot stop the execution: Sometimes, if a MEX-file is getting executed. Ctrl+c won't have any effect. If your RAM is so full that it cannot even execute Ctrl+c.

Når Ctrl+C Ikke Er Nok: Almindelige Undtagelser

Selvom Ctrl+C er et kraftfuldt værktøj, er det ikke ufejlbarligt. Der er flere scenarier, hvor denne kommando muligvis ikke virker som forventet. At forstå disse begrænsninger er afgørende for at kunne fejlfinde og løse problemet effektivt.

1. Langvarige Indbyggede Funktioner eller MEX-filer

Den mest almindelige årsag til, at Ctrl+C ikke virker, er, når MATLAB eksekverer en kompileret kodeblok, såsom en indbygget funktion (skrevet i C++ eller Fortran) eller en MEX-fil. Disse filer er præ-kompilerede for maksimal ydeevne og kører uden for MATLAB's standard fortolkningsmiljø. Fordi de opererer på et lavere niveau, tjekker de ikke regelmæssigt for afbrydelsessignaler fra brugeren. Koden vil derfor fortsætte med at køre, indtil den er helt færdig, og ignorerer dine gentagne forsøg på at trykke Ctrl+C. Dette er især tydeligt ved tunge lineære algebra-operationer, billedbehandling eller komplekse simulationer.

2. Høj Hukommelsesbelastning (RAM)

Et andet kritisk scenarie opstår, når dit system er ved at løbe tør for tilgængelig hukommelse (RAM). Hvis dit MATLAB-script allokerer store mængder data, kan det presse systemets ressourcer til det yderste. Når hukommelsen er fuld, bliver operativsystemet ekstremt langsomt, da det kæmper for at håndtere processer og swappe data til harddisken. I denne tilstand kan systemet være så belastet, at det ikke engang har ressourcer til at registrere og behandle dit Ctrl+C-input. MATLAB kan virke fuldstændig frosset, og i sådanne tilfælde er den eneste udvej ofte at tvangslukke processen via operativsystemets jobliste.

How to stop a function from running in MATLAB?
When you use parfeval to run a function in the background, MATLAB immediately returns a Future object. Long-running functions can block other functions from running in the background. To stop the function from running, you must use the cancel function instead of selecting Live Editor > Run > Stop.

Den Visuelle Tilgang: Stop-knappen i MATLAB's Editor

For dem, der foretrækker en grafisk brugerflade, tilbyder MATLAB's editor en praktisk visuel stop-knap. Når du kører et script fra editoren, vil du bemærke, at 'Run'-ikonet (en grøn trekant) ændrer sig. Under eksekvering vises teksten 'Running', og et rødt firkantet stop-ikon bliver synligt i værktøjslinjen. At klikke på dette røde ikon har samme effekt som at trykke Ctrl+C i kommandovinduet. Det sender et afbrydelsessignal og stopper scriptet efter den aktuelle linje er færdigbehandlet. Dette er en intuitiv metode, især for nye brugere, og giver en klar visuel indikation af, at koden er aktiv.

Håndtering af Avancerede Scenarier: Stop af Baggrundsprocesser

Med introduktionen af Parallel Computing Toolbox er det blevet almindeligt at køre funktioner i baggrunden ved hjælp af parfeval (Parallel Function Evaluation). Dette giver dig mulighed for at fortsætte med at arbejde i MATLAB's kommandovindue, mens en tidskrævende opgave kører parallelt. Men hvordan stopper man en sådan proces? Her virker hverken Ctrl+C eller stop-knappen, da de kun påvirker forgrundsprocessen.

Når du starter en funktion med `parfeval`, returnerer MATLAB øjeblikkeligt et `Future`-objekt. Dette objekt fungerer som en reference til din baggrundsopgave. Du kan bruge det til at tjekke status for opgaven og hente resultater, når den er færdig.

For at stoppe en baggrundsfunktion, skal du bruge funktionen cancel() på `Future`-objektet.

How do I pause a MATLAB program?
MATLAB‘s editor includes a handy visual Stop button as well: This works similarly to a Ctrl+C press, halting execution after the current line completes. The icon even changes color to indicate code is running: Then clicking the red stop square pauses things immediately.

Se dette eksempel:

% Start en uendelig pause i baggrunden ved hjælp af en parallel pool
f = parfeval(backgroundPool, @pause, 0, Inf);

% Tjek status for Future-objektet. Den vil være 'running'.
disp(f.State);
% output: 'running'

% For at stoppe funktionen, kald cancel() på objektet.
cancel(f);

% Tjek status igen. Den vil nu være 'finished'.
disp(f.State);
% output: 'finished'

Når `cancel()` kaldes, signalerer det til den parallelle worker, der kører opgaven, at den skal afbrydes. `Future`-objektets `State`-egenskab vil ændre sig fra `'running'` (eller `'queued'`, hvis den ventede på ressourcer) til `'finished'`. Dette er den korrekte og eneste måde at administrere og stoppe opgaver, der er startet med `parfeval`.

Sammenligningstabel over Stop-Metoder

For at give et klart overblik er her en sammenligning af de diskuterede metoder.

MetodeAnvendelseBegrænsninger
Ctrl+C / Command+.Standardmetode til at stoppe scripts og funktioner, der kører i forgrunden.Virker ikke på kompilerede MEX-filer, visse indbyggede funktioner eller når systemet har lav RAM.
Editor Stop-knapVisuelt alternativ til Ctrl+C, når kode køres fra editoren.Samme begrænsninger som Ctrl+C.
cancel(FutureObject)Den eneste korrekte metode til at stoppe funktioner, der kører i baggrunden via parfeval.Kræver, at du har gemt Future-objektet, der blev returneret af parfeval.
quit forceEn nødløsning, der lukker hele MATLAB-sessionen øjeblikkeligt.Drastisk. Alt arbejde, der ikke er gemt, går tabt. Lukker hele applikationen, ikke kun et script.

Den Sidste Udvej: `quit force`

Hvis alt andet fejler, og MATLAB er fuldstændig frosset, findes der en kommando, der fungerer som en nødafbryder: `quit force`. Denne kommando lukker øjeblikkeligt hele MATLAB-applikationen uden at gemme noget. Det er en drastisk løsning og bør kun bruges som en sidste udvej, da du vil miste alle ikke-gemte variable i dit workspace og ændringer i filer. Denne kommando er nyttig i automatiserede scripts, hvor du har brug for at sikre, at MATLAB lukker ned under alle omstændigheder. Når MATLAB lukkes, returnerer den en exit-kode til operativsystemet, som kan bruges til at signalere succes eller fejl i et større workflow.

How does MATLAB work?

Ofte Stillede Spørgsmål (FAQ)

Hvad er den sikreste måde at stoppe et script på uden at miste data?

Den sikreste metode er altid at forsøge med Ctrl+C eller stop-knappen først. Disse metoder er designet til at stoppe eksekveringen på en kontrolleret måde. For at undgå datatab i meget lange scripts, er det en god praksis at indbygge periodiske gemmekommandoer (f.eks. `save('midlertidige_resultater.mat', 'vigtig_variabel')`) inde i dine løkker. På den måde kan du genoptage arbejdet, selv hvis du er nødt til at afbryde scriptet.

Min MATLAB reagerer slet ikke på noget. Hvad gør jeg?

Hvis MATLAB er fuldstændig frosset og ikke reagerer på tastaturinput, er det sandsynligvis på grund af en blokerende MEX-fil eller kritisk mangel på RAM. I dette tilfælde er din eneste mulighed at bruge operativsystemets værktøjer til at tvangslukke processen. På Windows er dette 'Joblisten' (Task Manager), og på macOS er det 'Aktivitetsovervågning' (Activity Monitor). Find MATLAB-processen på listen, og afslut den.

Er der forskel på `Ctrl+C` og `Ctrl+Break`?

I konteksten af MATLAB er der funktionelt meget lille eller ingen forskel for brugeren. Begge sender et afbrydelsessignal til programmet. Historisk set er `Ctrl+Break` et signal på et lavere systemniveau, men MATLAB's fortolker håndterer dem generelt ens. Du kan prøve begge, hvis den ene ikke virker, men det er sjældent, at det gør en forskel.

Hvis du vil læse andre artikler, der ligner Sådan Stopper du en MATLAB-kommando Effektivt, kan du besøge kategorien Sundhed.

Go up