How can I add arrows to each integrin particle in my plot that is moving.
    4 views (last 30 days)
  
       Show older comments
    
N=10; % number of integrins
L=100; % size of the domain 100nm
D=.01; % diffusion coefficient
dt=1; % time step
F=randi([1, 10],1); % force on the bond with a random number of 1 to 10
P_a=randi([0,1],1); % binding rate of a random number from 0 to 1
P_ub=1/(1.5*F); % unbinding rate based upon our previous values
Tmax=500; % max time
% Intialize our integrins
x=randi([0,360],N,1); % x-coordinates generated randomily for each integrin
y=randi([0,50],N,1); % y-coordinates generated for each 
state=ones(N,1); % Each integrin is set to an inactive state at 0
% our figure
figure;
axis([0 L 0 L]);
set(gca,'nextplot','replacechildren');
% position update
for t = 0:dt:Tmax
% colors for our integrin states
colors = repmat([1 0 0], N,1); % red for inactive state
colors(state == 2,:,:) = repmat([0 1 0],sum(state == 2),1);
% plotting our integrins
 scatter(x,y,50,colors,'filled');
 title(sprintf('Time=%.2f',t));
 drawnow;
     for i=1:N
         w=randi([0,1],1); 
         if state(i)==1
         dx=randi([-360,360],1);
         dy=randi([-50,50],1);
         x(i)=x(i)+dx;
         y(i)=y(i)+dy; 
         end 
     end
     x=mod(x,L);
     y=mod(y,L);
     for i=1:N
         w_1=randi([0,1],1);
         if w_1 < P_a && state(i)==1
             state(i)=2;
         end
     end
     for i=1:N
         w1=randi([0,1],1);
         if state(i)==2 && w1<P_ub
            state(i)=1;
         end
     end
    Displacement=sqrt((mean(x.^2))/N)
end
2 Comments
  Walter Roberson
      
      
 on 2 May 2023
				What is the difference between this and https://www.mathworks.com/matlabcentral/answers/1956849-how-can-i-add-arrows-onto-the-particles-in-my-movie-that-indicate-there-movement-with-my-code-and-ho?s_tid=srchtitle
Answers (1)
  LeoAiE
      
 on 2 May 2023
        Here is my shot at this! 
N=10; % number of integrins
L=100; % size of the domain 100nm
D=.01; % diffusion coefficient
dt=1; % time step
F=randi([1, 10],1); % force on the bond with a random number of 1 to 10
P_a=randi([0,1],1); % binding rate of a random number from 0 to 1
P_ub=1/(1.5*F); % unbinding rate based upon our previous values
Tmax=500; % max time
% Intialize our integrins
x=randi([0,360],N,1); % x-coordinates generated randomly for each integrin
y=randi([0,50],N,1); % y-coordinates generated for each
state=ones(N,1); % Each integrin is set to an inactive state at 0
% our figure
figure;
axis([0 L 0 L]);
set(gca,'nextplot','replacechildren');
% Initialize the previous positions
x_prev = x;
y_prev = y;
% position update
for t = 0:dt:Tmax
    % colors for our integrin states
    colors = repmat([1 0 0], N,1); % red for inactive state
    colors(state == 2,:,:) = repmat([0 1 0],sum(state == 2),1);
    % plotting our integrins
    scatter(x,y,50,colors,'filled');
    % Add arrows to each integrin particle
    hold on;
    quiver(x_prev, y_prev, x - x_prev, y - y_prev, 'k', 'AutoScale', 'off');
    hold off;
    title(sprintf('Time=%.2f',t));
    drawnow;
    for i=1:N
        w=randi([0,1],1);
        if state(i)==1
            dx=randi([-360,360],1);
            dy=randi([-50,50],1);
            x(i)=x(i)+dx;
            y(i)=y(i)+dy;
        end
    end
    % Update the previous positions and calculate the displacement vectors
    x_prev = x;
    y_prev = y;
    x=mod(x,L);
    y=mod(y,L);
    for i=1:N
        w_1=randi([0,1],1);
        if w_1 < P_a && state(i)==1
            state(i)=2;
        end
    end
    for i=1:N
        w1=randi([0,1],1);
        if state(i)==2 && w1<P_ub
            state(i)=1;
        end
    end
    Displacement=sqrt((mean(x.^2))/N);
end
0 Comments
See Also
Categories
				Find more on Read, Write, and Modify Image 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!



