- Do you receive warning and/or error messages? If so the full and exact text of those messages (all the text displayed in orange and/or red in the Command Window) may be useful in determining what's going on and how to avoid the warning and/or error.
- Does it do something different than what you expected? If so, what did it do and what did you expect it to do?
- Did MATLAB crash? If so please send the crash log file (with a description of what you were running or doing in MATLAB when the crash occured) to Technical Support so we can investigate.

# How can I make this a callable function?

5 views (last 30 days)

Show older comments

function [i,IS]=firststateupdate(N,P_ub,w1)

for i=1:N

w1=randi([0,1],1);

if IS(i)==2 && w1<P_ub

IS(i)=1;

end

end

end

Not enough input arguments.

Error in firststateupdate (line 2)

for i=1:N

##### 5 Comments

### Answers (1)

Animesh
on 12 May 2023

Hey BAILEY,

I understand that you are trying to create and call functions inside the script.

I tried implementing this at my end and it is working fine. I am attaching the modified base code below:

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;

quiver(x(i),y(i))

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

state=firststateupdate(N,P_ub,state); % Function Call

Displacement=sqrt((mean(x.^2))/N);

end

Also refer the modified function ‘firststateupdate.m’ that you were trying to create below:

function [IS]=firststateupdate(N,P_ub,IS)

for i=1:N

w1=randi([0,1],1);

if IS(i)==2 && w1<P_ub

IS(i)=1;

end

end

end

NOTE: When working with functions, ensure that you include all the input arguments used while defining the function before yuo call it.

For more information on creating functions in MATLAB, consider going through the following link:

- https://in.mathworks.com/help/matlab/matlab_prog/create-functions-in-files.html
- https://in.mathworks.com/help/matlab/matlab_prog/local-functions-in-scripts.html

I hope this helps.

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!