Matlab turns char into double on cluster.
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Michael Stollenwerk
el 30 de Mzo. de 2022
Comentada: Stephen23
el 5 de Abr. de 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 comentarios
Respuesta aceptada
Voss
el 30 de Mzo. de 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 comentarios
Stephen23
el 5 de Abr. de 2022
This is one reason why it is recommended to always LOAD into an output variable:
S = load(..);
Más respuestas (0)
Ver también
Categorías
Más información sobre Get Started with MATLAB en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!