print values in one matrix to another
    1 visualizzazione (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Hi,
I have very large matricies but will abbreviate them as best as possible here.
I have a matrix called "connectivity" which contains 5884  rows (total_elements = 5884) and 5 columns. The first column is the element number, the second column is node 1 and the third column is node 2:
connectivity(total_elements, 5); 
connectivity(:,1) = 1:total_elements;
connectivity(:,2) = N1;
connectivity(:,3) = N2;
making this matrix look like
1   900    175
2   175    200
3   200    145
4   145     300...
I have a second matrix "C" which has the x and y coordinates for each of the nodes.
NodeNumber Xcomponent Ycomponent
...
I need to write a loop that will search matrix "C" for the correct x and y coordinates for each node and create a new matrix "length," which looks like the following:
length = zeros(total_elements, 7);
    length(:,1) = 1:total_elements
    length(:,2) = N1;
    length(:,3) = N2;
    length(:,4) = x1; %x coordinate of node 1
    length(:,5)=x2; %x coordinate of node 2
    length(:,6)=y1; %y coordinate of node 1
    legnth(:,7)=y2; %y coordinate of node 2
being: 
element#    N1    N2    x1    x2    y1    y2
2 Commenti
  Walter Roberson
      
      
 il 16 Apr 2020
				Is it mandatory to use a for loop? This is something that is easily vectorized.
Risposta accettata
  Tommy
      
 il 16 Apr 2020
        
      Modificato: Tommy
      
 il 16 Apr 2020
  
      Let me know if this works:
length = [connectivity, zeros(total_elements, 4)];
for i = 1:total_elements
    length(i, [4 6]) = C(C(:,1)==connectivity(i,2),[2 3]);
    length(i, [5 7]) = C(C(:,1)==connectivity(i,3),[2 3]);
end
(edit) If you want to avoid the loop, and to match the format you've given in the comments:
[~,i] = ismember(connectivity(:,[2 3]),C(:,1));
length = [connectivity(:,[1 2]), C(i(:,1),[2 3]), connectivity(:,3), C(i(:,2),[2 3])];
Either way should work for any number of elements and nodes, provided your connectivity and C matrices are formatted as you've described.
8 Commenti
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!