Assign different values to variables in loop
Show older comments
I have the following code to generate a file: (result of output at the end)
prompt = 'Enter the file name (without extension) to be saved as Abaqus inputfile CSV: ';
fileName = input(prompt,'s');
fileName1=[fileName,'.csv'];
fileID = fopen(fileName1, 'w');
fID = fopen(fileName1, 'w');
snf = [ 1 2 3 4];
for snf = (1:size(snf,2))
fs4 = ('Force(name=''Load-%d'')\n');
mm4 = ('Moment(name=''Load-%d'')\n');
% fprintf(fID,fs1,nodenumber(sn),nodenumber(sn));
% fprintf(fID,fs2,nodenumber(sn),nodenumber(sn));
% fprintf(fID,fs3,nodenumber(sn),nodenumber(sn));
fprintf(fID,fs4,snf);
fprintf(fID,mm4,snf);
end
fclose(fID);
The resulting file is
Force(name='Load-1')
Moment(name='Load-1')
Force(name='Load-2')
Moment(name='Load-2')
Force(name='Load-3')
Moment(name='Load-3')
Force(name='Load-4')
Moment(name='Load-4')
What i have not been able to get is a file that has different load id for moment than force. What i want is as follows,
Force(name='Load-1')
Moment(name='Load-5')
Force(name='Load-2')
Moment(name='Load-6')
Force(name='Load-3')
Moment(name='Load-7')
Force(name='Load-4')
Moment(name='Load-8')
note: snf in the code is an array of serial numbers starting from 1 and i want to index the moments from where the force indexing ends.
4 Comments
Surely just using something like:
snf2 = 5:8;
...
fprintf(fID,mm4,snf2);
would work. Preferably in a neater fashion though!
Yasir Zahoor
on 12 Feb 2019
Jan
on 12 Feb 2019
This sounds like the standard mistake of hiding indices in names of variables. You an array instead. See: TUTORIAL: How and why to avoid Eval
Yasir Zahoor
on 12 Feb 2019
Accepted Answer
More Answers (0)
Categories
Find more on Entering Commands in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!