I am getting error "not enough input arguments" , I don't know how to resolve this.

2 次查看(过去 30 天)
function [dn]=numparticles(t, n)
global SECT funcall No m
funcall=funcall+1;
dn=zeros(SECT,1);
sums=zeros(3,1);
disp(['Function call ', num2str(funcall),' t value ', num2str(t) ,' of ',num2str(120),'.'])
for i=1:SECT
if (i-2 >= 1)
for j=1:i-2
sums(1)=sums(1)+beta(i-1,j)*2^(j+1-i)*n(j);
end
end
if (i-1 >= 1)
for j=1:i-1
sums(2)=sums(2)+beta(i,j)*2^(j-i)*n(j);
end
dn(i)=dn(i)+ n(i-1)*sum(1)+ 0.5*beta(i-1,i-1)*n(i-1)^2-n(i)*sums(2);
end
if (i+1 <=SECT)
% dn(i)=dn(i)+2*gamma(i+1)*n(i+1);
for j=1:SECT
sums(3)=sums(3)+beta(i,j)*n(j);
end
dn(i)=dn(i)-n(i)*sums(3);
end
dn(i)=dn(i)/No(1);
sums=zeros(3,1);
end
  1 个评论
Jan
Jan 2021-6-30
编辑:Jan 2021-6-30
Whenever you mention an error in the forum, post the complete message. It is hard to guess, in which line your code fails, but you have this valuable information directly on the screen. So please share it with the readers.
Is beta a function or an array?

请先登录,再进行评论。

回答(1 个)

Jan
Jan 2021-6-30
编辑:Jan 2021-6-30
How do you call this function? If you use the green triangle in the editor, the function is called without inputs and you will see the mentioned error.
You have to call it with inputs from the command window or from another script or function:
t = ???;
n = ???;
dn = numparticles(t, n)
  3 个评论
Jan
Jan 2021-6-30
编辑:Jan 2021-6-30
If I change the line:
[t, N]=ode15s('numparticles',[0 120],No);
to
[t, N]=ode15s(@numparticles,[0 120],No);
the code runs in Matlab r2021a.
A small acceleration of the code:
function B = beta(i,j)
k = (i/j) ^ (1/3);
B = 0.25 * (2 + k + 1/k)
end

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by