Code correspondant:
function result = loadStructFromFile(fileName, environmentName)
result = load(fileName, environmentName);
bigMatrix = loadStructFromFile('values.mat','bigMatrix');
4 Réponses :
comme la documentation de charge indique, si vous l'appelez avec Un argument de sortie, le résultat est renvoyé dans une structure. Si vous ne l'appelez pas avec un argument de sortie, les variables sont créées dans l'espace de travail local avec le nom comme celui qu'ils ont été sauvegardés.
pour votre fonction loadtructromfile code> si le nom de la variable enregistré peut avoir Noms différents (je suppose environnementName code>), vous pouvez renvoyer la variable en écrivant p>
Quelle conception de l'API absolument dégoûtante (de la chargement de Matlab () code>) ... merci pour l'explication cependant!
Même lorsque vous spécifiez simplement un nom de variable unique, charge sera toujours la sortie dans une structure. Dans votre cas, une option que vous avez consiste à utiliser la fonction Struct2Cell à Convertir la sortie de Chargez dans une matrice de cellule, puis renvoyez ce résultat en utilisant Liste d'arguments de sortie variable :
[N1,N2,N3] = loadStructFromFile('values.mat','N*');
C'est un ancien poste, mais s'il peut être utile pour certaines personnes:
Lorsque vous chargez une structure, vous souhaitez affecter directement les sous-champs de la structure de sortie, vous pouvez utiliser structure Code> et la commande suivante: p> bigMatrixOUT = structfun(@(x) x,load('values.mat','bigMatrix'))
Vous pouvez également essayer d'accéder au champ connu à l'aide de la notation de points, de sorte que tout se passe dans une ligne de code.
bigMatrix = load('values.mat','bigMatrix').('bigMatrix');