write 3 for loops in each other
3 views (last 30 days)
Show older comments
Hamed Nobarani
on 28 Sep 2018
Commented: Hamed Nobarani
on 11 Nov 2019
I should write the program to get the positions x,y,z (lattice points) and then repeat these positions(lattice cube) in the x,y,z direction with the constant(lattice constant).my code is just working in one direction(x), how can I fix my code to work in all 3 x,y,z directions?
for k=0:o
for j=0:m
for i=0:n
xpp(8*i+1:8*i+8,1)=xp+D*i;
ypp(8*i+1:8*i+8,1)=yp+D*j;
zpp(8*i+1:8*i+8,1)=zp+D*k;
end
end
end
%start
a=importdata('structure.xyz');
xp=a.data(:,1);
yp=a.data(:,2);
zp=a.data(:,3);
n=1;
m=1;
o=1;
xpp=xp;
ypp=yp;
zpp=zp;
for k=0:o
for j=0:m
for i=0:n
xpp(8*i+1:8*i+8,1)=xp+D*i;
ypp(8*i+1:8*i+8,1)=yp+D*j;
zpp(8*i+1:8*i+8,1)=zp+D*k;
end
end
end
fileID = fopen('N.txt','w');
fprintf(fileID,'%s\n','silicon');
fprintf(fileID,'si %f %f %f\n',[xpp,ypp,zpp].');
fclose(fileID);
1 Comment
JohnGalt
on 1 Oct 2018
what's D? what's the for loop at the start of your question (before '%start')? Can you give an example with some very small amount of data? are trying to create a grid starting from a specific point with a specific separation?
Accepted Answer
Hamed Nobarani
on 11 Nov 2019
Edited: Rik
on 11 Nov 2019
2 Comments
Rik
on 11 Nov 2019
The code below is equivalent to what you wrote, but should be slightly faster.
pp=zeros(o*m*n*8,3);%or: pp=zeros([o*m*n 1].*size([xp,yp,zp]))
s=0;
for k=1:o
for j=1:m
for i=1:n
nb=[xp+D*(i-1),yp+D*(j-1),zp+D*(k-1)];
pp(s+1:s+8,:)= nb;
s=s+8;
end
end
end
l=o*m*n;
You should try to avoid l and o as variable names, because they look very similar to 1 and 0. It also looks like it should be possible to do this with meshgrid and reshape, which would avoid the loops.
More Answers (1)
Karun Mathiazhagan
on 3 Oct 2018
Hello Hamed,
If my understanding is correct that you wish to create a 3-D grid of points similar to a lattice structure, the following MATLAB Answers post should be of use to you: https://www.mathworks.com/matlabcentral/answers/98191-how-can-i-obtain-all-possible-combinations-of-given-vectors-in-matlab
0 Comments
See Also
Categories
Find more on Whos in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!