The lines inside my while-loop are never executed
Informazioni
Questa domanda è chiusa. Riaprila per modificarla o per rispondere.
Mostra commenti meno recenti
function lagre(filename)
res = 1;
fid = fopen(filename,'w');
while (res ~= [])
res = input('Type in text that you want to save, and press Enter. Leave a blank space and press Enter to quit.');
fprintf(fid, '%s \n', res);
end
fclose(fid);
end
The lines inside this while-loop are never executed, and I don't understand why. 1 is certainly unequal to nothing, right?
Risposte (1)
dpb
il 2 Dic 2014
...1 is certainly unequal to nothing, right?
Yabbut... :)
The ~= comparison fails because the two results are incompatible in type/class.
Use
while ~isempty(res)
instead.
1 Commento
Guillaume
il 2 Dic 2014
To add to that, matlab has many different ways to arrive at the empty set, none of which it considers equal with isequal. With == you have the additional problem that these empty have different sizes (sic!)
a = 1;
a(1) = []; % a is now empty
isequal(a, []) %return false!
isequal(a, double.empty(0,1)) %return false!
a == [] %error dimension not equal
Always use isempty to test for emptiness.
Questa domanda è chiusa.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!