- 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?
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(1 个)
Animesh
2023-5-12
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 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!