Assign different values to variables in loop
显示 更早的评论
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 个评论
Surely just using something like:
snf2 = 5:8;
...
fprintf(fID,mm4,snf2);
would work. Preferably in a neater fashion though!
Yasir Zahoor
2019-2-12
Jan
2019-2-12
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
2019-2-12
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Entering Commands 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!