1
$\begingroup$

I want to export some sort of data from Mathematica to .txt files but every time with a different name.clearly I want the name of files change automatically in each loop for each series of data that are produced in each iteration.

s = -1 
While[s < 2*q = 2.;
  \[CapitalDelta] = 0.5;
  smin = -0.3;
  smax = 0.1;
  \[CapitalDelta]s = 0.01;
  L = 5;
  p = 2^L;
  s = s + 0.05;
  H = {{1, 0, 0, 0}, {0, 1 - (\[CapitalDelta] + 1)*q, E^s/q, E^s/q}, 
       {0, q E^s, 1 - (\[CapitalDelta] + 1)/q, q E^s}, 
       {0, \[CapitalDelta]*q*E^s, (\[CapitalDelta]*E^s)/q, 1 - (q + 1/q)}};
  IM = IdentityMatrix[2];
  row = ConstantArray[1, p];
  sum = row.H;
  Export["sum,L=5,q=2,d=0.5,s=-1.txt", sum];
  Export["H,L=5,q=2,d=0.5,s=-1.txt", Flatten[H], "Table"]
  ];

I want to change "s" in the name of the files each time with the real value of it in that itteration

$\endgroup$
  • $\begingroup$ You should be more specific (please give some code) but maybe this will help. $\endgroup$ – SquareOne Feb 3 '15 at 8:40
  • $\begingroup$ Do[Export["superfile-"<>ToString[i]<>".jpg",fig[[i]]],{i,1,10}] $\endgroup$ – chris Feb 3 '15 at 8:48
  • $\begingroup$ s = -1 While[s < 2*q = 2.; [CapitalDelta] = 0.5; smin = -0.3; smax = 0.1; [CapitalDelta]s = 0.01; L = 5; p = 2^L; s = s + 0.05; H = {{1, 0, 0, 0}, {0, 1 - ([CapitalDelta] + 1)*q, E^s/q, E^s/q}, {0, qE^s, 1 - ([CapitalDelta] + 1)/q, qE^s}, {0, [CapitalDelta]*q*E^s, ([CapitalDelta]*E^s)/q, 1 - (q + 1/q)}}; IM = IdentityMatrix[2]; row = ConstantArray[1, p]; sum = row . H; Export["sum,L=5,q=2,d=0.5,s=-1.txt", sum]; Export["H,L=5,q=2,d=0.5,s=-1.txt", Flatten[H], "Table"]] $\endgroup$ – sara kaviani Feb 3 '15 at 8:52
  • $\begingroup$ I want to change "s" in the name of the files each time with the real value of it in that itteration $\endgroup$ – sara kaviani Feb 3 '15 at 8:53
  • $\begingroup$ @sarakaviani I edited your question to include your code (which I can't get to run as written - the test for the While loop isn't constructed right I think). $\endgroup$ – Jason B. Feb 3 '15 at 9:36
2
$\begingroup$

Instead of "H,L=5,q=2,d=0.5,s=-1.txt" write for example:

"H,L=5,q=2,d=0.5,s="<>ToString[CForm[s]]<>".txt"
$\endgroup$
1
$\begingroup$

A very simple solution using TextString and StringJoin:

Export[StringJoin["C:\\Users\\...\\first_part_of_name", TextString[variable], ".txt"], sum];
$\endgroup$
  • $\begingroup$ very clean and neat answer, helped me a lot. $\endgroup$ – Tom Zinger Dec 6 '16 at 10:25
  • $\begingroup$ Export[StringJoin["C:/eflut", TextString[A], ".tiff"], out]; I want to label eflut graph of out with the value of A eg 3,4 but got 2 errors StringJoin::string: String expected at position 2 in C:/eflut<>TextString[3]<>.tiff. >> Export::chtype: First argument C:/eflut<>TextString[3]<>.tiff is not a valid file specification. >> $\endgroup$ – simon Oct 3 '19 at 15:17
0
$\begingroup$

You could generate the filenames using StringTemplate with a positional argument:

s=-1;
mytemplate := StringTemplate["sum, L=5, q=2, d=0.5, s=`svalue`.txt"]
filestring = mytemplate[<|"svalue" -> ToString[s]|>]

(* sum,L=5,q=2,d=0.5,s=-1.txt *)

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.