substracting every row from each other

1 view (last 30 days)
I am trying to substract every other row using 2 loops, what is wrong with this code?
Here is the code,
% these are the coordinates I am using
coor=[x' y' z'];
%number of the rows is my atomnumber
atomnum=size(x,2);
contactmapdistance=zeros;
for i=atomnum : 1
for j= 1:atomnum
contactmapdistance(i,3)=coor(i,:) - coor(j,:);
i=i-1;
end
j=j+1;
end
  1 Comment
Selma Nur Keskin
Selma Nur Keskin on 6 Jun 2020
If anybody could make this work in two loops so that ı understand how it works it would be great

Sign in to comment.

Accepted Answer

madhan ravi
madhan ravi on 6 Jun 2020
coor - reshape(coor.',1,size(coor,2),[])
  1 Comment
Selma Nur Keskin
Selma Nur Keskin on 6 Jun 2020
I guess this is working but i am such a beginner , what does 463x3x463 double means? when I store the results in a matrix the matrix size looks like that. Thank you very much btw!

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 6 Jun 2020
Edited: Image Analyst on 6 Jun 2020
Do you mean like this:
% Initialize data
% numRows = 5
x = randi(9, numRows, 1);
y = randi(9, numRows, 1);
z = randi(9, numRows, 1);
% These are the coordinates I am using
coor = [x(:), y(:), z(:)]
% number of the rows is my atomnumber
% atomnum = size(x, 2)
contactMapDistance = zeros(ceil(numRows/2) - 1, 3);
% Subtract row 1 from row 3, row 3 from row 5, row 5 from row 7, etc.
cRow = 1;
for row = 1 : 2 : numRows - 2
contactMapDistance(cRow, :) = coor(row+2, :) - coor(row, :);
cRow = cRow + 1;
end
contactMapDistance % Show in command window
  4 Comments
Selma Nur Keskin
Selma Nur Keskin on 7 Jun 2020
Thanks a lot you guys, madhan like I said i am a beginner so i don't understand some notations

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by