PDA

View Full Version : Info salvataggio in mathematica


sangi
19-07-2016, 15:50
Buonasera a tutti,
sto usando Mathematica per creare delle funzioni di calcolo combiatorio.
A causa degli ingenti calcoli che dovrà fare, ho necessità di fargli salvare i dati ottenuti in file diversi, ovvero in un ciclio For lui dovrà salvare il risultato al primo step in un file di nome per esempio file_1, al secondo step nel file_2 e così via.
avevo pensato a qualcosa del genere:

For[k1 = 1, k1 <= LenRighe, k1++,
str = "file_" <> ToString[k1];
...
....
calcoli
...
...
Save["str.txt",risultato]
]

ma str lo prende come proprio il nome del file da creare, e non lo fa variare come prima definito al variare di k1..
potreste aiutarmi per favore?
grazie anticipatamente :)

sagitter79
20-07-2016, 16:24
premetto che non conosco questo linguaggio.

str è la variabile che contiene il nome del file.
quando chiami la funzione "SAVE" dovresti passargli la variabile senza apici.

dovresti fare una cosa del genere:


partialFileName = "file_";
extension = ".txt";
For[k1 = 1, k1 <= LenRighe, k1++

str = partialFileName + k1 + extension;
...
....
calcoli
...
...
Save[str,risultato]
]

sangi
20-07-2016, 19:14
premetto che non conosco questo linguaggio.

str è la variabile che contiene il nome del file.
quando chiami la funzione "SAVE" dovresti passargli la variabile senza apici.

dovresti fare una cosa del genere:


partialFileName = "file_";
extension = ".txt";
For[k1 = 1, k1 <= LenRighe, k1++

str = partialFileName + k1 + extension;
...
....
calcoli
...
...
Save[str,risultato]
]


innanzitutto grazie per la risposta, così mi da errore, mi restituisce infatti:
"\!\(\"file_\" + \".txt\" + k1\) is not a string, InputStream[ ], or \
OutputStream[ ]"

ma se lascio come avevo fatto io e inserisco str senza apici effettivamente mi fa il salvataggio, però senza estensione. ho provato quindi a mettere l'estensione in To string, ovvero per esempio:

Prova[n_] :=
Module[{k},
m = n;
For[k = 1, k <= n, k++,
str = "file_" <> ToString[k.txt];
m = m + 1;
Save[str, m];
];
m
]

però nel file mi lascio lo spazio tra il punto e txt, quindi non riconosce il formato

sagitter79
21-07-2016, 10:33
di nulla. ;)

prova con questa dichiarazione:


StringForm["x = ``, y = ``", 3, (1 + u)^2]


l'output sarà così:


https://reference.wolfram.com/language/tutorial/Files/StringOrientedOutputFormats.en/O_3.gif


questo che ho scritto lo trovi QUI (https://reference.wolfram.com/language/tutorial/StringOrientedOutputFormats.html)


detto questo, puoi provare a scrivere il tuo codice così:


Prova[n_] :=
Module[{k},
m = n;
For[k = 1, k <= n, k++,
str = StringForm["file_``.``",ToString[k], txt]
m = m + 1;
Save[str, m];
];
m
]