Global variable scope is not applied in try and catch
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ankit Singh
am 7 Mai 2016
Kommentiert: Image Analyst
am 7 Mai 2016
global Name;
clear all;
close all force;
prompt = 'Enter Name';
%Name = input(prompt,'s');
Name = input(prompt);
for i=1:10
Depth;
DetectFaceandEyes;
calcEyedistance
try
load db;
euclideanDistance = round(euclideanDistance,1);
F=[euclideanDistance Name distanceAsString];
db=[db;F];
save db.mat db
catch
db =[euclideanDistance Name distanceAsString];
save db.mat db
end
end
Undefined function or variable 'Name'.
Error in Trianing (line 18) db =[euclideanDistance Name distanceAsString];
0 Kommentare
Akzeptierte Antwort
Azzi Abdelmalek
am 7 Mai 2016
Bearbeitet: Azzi Abdelmalek
am 7 Mai 2016
global Name;
clear all;
close all force;
prompt = 'Enter Name';
Name = input(prompt)
You declare Name as global, then you clear all the variables, finally you ask to enter the variable Name. You have to remove the: clear all
6 Kommentare
Weitere Antworten (1)
Image Analyst
am 7 Mai 2016
Bearbeitet: Image Analyst
am 7 Mai 2016
You have
global Name;
clear all;
Now, the help says "A variable that is global, then clear removes it from the current workspace, but it remains in the global workspace". Now I think that's a little ambiguous - is Name there or not? When you recreate Name with a call to input():
Name = input(prompt);
Is that a new local variable called Name, or is that the same Name in the global workspace again? I'm not sure. My guess is that it's a local variable that unfortunately now has the same name as the variable in the global workspace. But they're two different variables now. The best thing to do is (like Azzi said) to remove the call to clear.
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!