'verwijder alle' in de FOR-lus ...

N

nicleo

Guest
Code:Wanneer de volgende codes:% [Code 1]

k = 5

clear all;

dummy = k...
werden geëxecuteerd, Matlab bleek een fout als volgt:

?? Verwijzing naar een geklaard variabele k. "Echter, wanneer de volgende codes:% [Code 2]

for i = 1:5

ik

clear all;

dummy = i

eindigen...
werden geëxecuteerd, heeft Matlab zelfs geen enkele fout.
De lijn dummy = i, als hij wordt uitgevoerd, was als volgt weergegeven:dummy = 0 1.0000i

 
Answers (verkregen uit een aantal MATLAB-gebruikers in andere forum) voor mijn eigen vraag:[Antwoord 1]

Klinkt heel redelijk voor mij.De lus variabele is niet verhoogd (zoals het zou zijn in Fortran of C).In plaats daarvan elke lus kent de volgende kolom van de matrix aan de lus variabele.In dit geval [1 2 3 4 5].Dus veranderen (of de clearing) de lus variabele in de lus heeft geen invloed op de volgende waarde.[Antwoord 2]

Thing krijgen nog vreemder: wanneer u [code 2] op de opdrachtregel, heeft het een foutmelding geven, als je het lopen van een m-bestand het niet ...Dit zou betekenen dat het iets te maken met de compiler / tolk.Een kleine test toont een mogelijke reden:

% [Code 3]
voor k = 1:5
k
clear all;
dummy = k
eindigen

[code 3] geeft een foutmelding weer.Dit betekent dat de compiler de code scant, ziet dat de imaginaire eenheid 'i' wordt gebruikt, weet dat je niet kunt een waarde duidelijk, maar de helft vergeet dat er ook een variabele genaamd i. ...Hoewel de variabele i is gewist omdat het niet te zien in de werkruimte ...Een andere test om het compleet te maken:

% [Code 4]
voor I = 1:5
Ik
clear all;
dummy = i
eindigen

Hoewel we weten Matlab is hoofdlettergevoelig, kan de imaginaire eenheid i ook worden verkregen door het schrijven van I. [code 4] ook geeft geen fout.Misschien hielp je een stap verder, maar ik hoop dat iemand anders kan geven meer inzicht in de manier waarop Matlab handvatten verwijzingen naar de variabelen intern.[Antwoord 3]

Als u duidelijk i, i is weer de imaginaire eenheid (dus de dummy = 0 1.0000i).
Opmerking: U kunt i in de lus en de lus wordt niet aangetast, zal het blijven updaten (dit is anders dan bijvoorbeeld C-Code).

 
commando "Alle" betekent duidelijk alle variabele int het commando ruimte.
Dus na je duidelijk alle variabele int de ruimte, is er geen k. Er zal tonen een foutmelding voor je.

 
met behulp van commando 'Alles wissen' betekent dat alle variabelen voor deze opdracht worden verwijderd.Dus na dat commando ontvangt u een foutmelding.

 

Welcome to EDABoard.com

Sponsor

Back
Top