Matlab turns char into double on cluster.
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Michael Stollenwerk
il 30 Mar 2022
Commentato: Stephen23
il 5 Apr 2022
On the cluster I run
matlab -nodesktop -r "program 1" > program_1.out 2>&1
where the first lines of code in "program" look like this
function program(dtaset_id)
addpath(genpath('../..'))
if isempty(gcp('nocreate'))
parpool(maxNumCompThreads,'IdleTimeout', 300)
end
whos
load(strcat('dataset_', dtaset_id, '.mat'))
whos
dtaset_id = str2num(dtaset_id);
The strange thing is that the first "whos" reports "dtaset_id" to be a char, and the second whos reports it to be a double, causing an error in the last line.
How and why does this happen?
0 Commenti
Risposta accettata
Voss
il 30 Mar 2022
It may be that the mat file you load contains a variable called dtaset_id, which is a double. When you load the mat file that value overwrites the previous value of dtaset_id in your workspace.
Here I've attached a mat file with a double dtaset_id to demonstrate.
dtaset_id = '0';
whos('dtaset_id') % char
load(strcat('dataset_', dtaset_id, '.mat')) % overwrites dtaset_id with value from mat file
whos('dtaset_id') % now double
2 Commenti
Stephen23
il 5 Apr 2022
This is one reason why it is recommended to always LOAD into an output variable:
S = load(..);
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Get Started with MATLAB in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!