1

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

Jason B.
  • 68,381
  • 3
  • 139
  • 286
sara kaviani
  • 117
  • 2
  • 8
  • You should be more specific (please give some code) but maybe this will help. – SquareOne Feb 03 '15 at 08:40
  • Do[Export["superfile-"<>ToString[i]<>".jpg",fig[[i]]],{i,1,10}] – chris Feb 03 '15 at 08:48
  • 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]qE^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"]] – sara kaviani Feb 03 '15 at 08:52
  • I want to change "s" in the name of the files each time with the real value of it in that itteration – sara kaviani Feb 03 '15 at 08:53
  • @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). – Jason B. Feb 03 '15 at 09:36
  • Thank you dear Jason.I'm trying to learn Mathematica and am really an amateur! – sara kaviani Feb 03 '15 at 13:35

4 Answers4

3

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"
SquareOne
  • 7,575
  • 1
  • 15
  • 34
1

A very simple solution using TextString and StringJoin:

Export[StringJoin["C:\\Users\\...\\first_part_of_name", TextString[variable], ".txt"], sum];
eparra
  • 11
  • 1
  • very clean and neat answer, helped me a lot. – Fierce82 Dec 06 '16 at 10:25
  • 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. >>

    – simon Oct 03 '19 at 15:17
0

There is a simple way if you are using the Table[] function. For example: Table[Export[NotebookDirectory[]<>ToString@StringForm["test``.txt", l], Table[{l,l^2}, {l, 1, 10}];. In this case, the program will generate ten files written as "testl.txt" for each l with the values l and l^2 as columns.

jpbbrito
  • 56
  • 4
0

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 *)

dionys
  • 4,321
  • 1
  • 19
  • 46