I am new to MATLAB and i am running a function called 'delaySolve2.m' to solve for true infection data given infection measurements and a delay function for covid-19. But i get the following error code when i try to run it; "delaySolve2" requires more input arguments to run.
BELOW IS THE deleySolve2 functinon codes;
function [Exposure,shift,znum] = delaySolve2(Infection,Dist,varargin)
% this code gets a vector of reported Infection and a delay distribution
% (Dist) and provides the estimated exposure/true infection
p=inputParser;
addOptional(p,'Penalty',0.2,@isnumeric); %the penalty for variance in Exposure over time
parse(p,varargin{:});
alpha=p.Results.Penalty;
%Dist = totd;
%Dist = DelayEstimation2;
Dist=Dist/sum(Dist); %making sure Dist adds to 1
Dist(cumsum(Dist)==1 & Dist==0)=[]; % remove trailing zeros
ilen=numel(Infection);
czdist=cumsum(Dist==0); %counting early zeros
if max(czdist)>0
znum=czdist(Dist==max(Dist));
else
znum=0;
end
Dist=flip(Dist);
if ilen<1
Exposure=[];
shift=0;
else
drn=numel(Dist);
coeff=zeros(ilen,ilen+drn);
for i=1:ilen
coeff(i,i:i+drn-1)=Dist;
end
dropped=sum(coeff,1)==0;
coeff(:,dropped)=[];
%coeff(:,ilen+1:end)=[];
xlen=size(coeff,2);
pnl=eye(xlen);
pnl(2:end,1:end-1)=pnl(2:end,1:end-1)-eye(xlen-1);
pnl(1:end-1,2:end)=pnl(1:end-1,2:end)-eye(xlen-1);
pnl=pnl+eye(xlen);
pnl(1,1)=1;pnl(end,end)=1;
Ex=quadprog(coeff'*coeff+alpha*pnl,-coeff'*Infection',-eye(xlen),zeros(xlen,1));
Exposure=zeros(numel(Infection)+drn,1);
Exposure(1:numel(Ex))=Ex;
shift=drn;
end
end

댓글 수: 2

Stephen23
Stephen23 2021년 5월 25일
@BRIAN KANJI: how are you defining and providing the input arguments when you call the function?
If you are just clicking the big green "Run" button, what values do you expect Infection and Dist to have?
i have been able to provide the inputs,i.e. Infection(the reported new covid cases in a time series format) & Dist(delay distribution) in the command window and calling this function in the command window. It has run without giving the previous error of "function requires more input arguments to run". But in the process of running, i get the following error; "Error using zeros
Requested 474x10000474 (35.3GB) array exceeds maximum array size preference (15.9GB). This might cause MATLAB to become unresponsive.
Error in delaySolve2 (line 29)
coeff=zeros(ilen,ilen+drn);"

댓글을 달려면 로그인하십시오.

 채택된 답변

Jan
Jan 2021년 5월 25일

0 개 추천

While the actual code of the function does not matter, it is important to know, how you try to call it. If you use the green triangle in the editor, the function is called without input arguments. If you call it from another function or from the command window, what do you provide as input arguments?
This would be clear, if you post the complete error message, not just a part of it. Remember this for the future to support the readers in the forum.

댓글 수: 4

i have been able to provide the inputs,i.e. Infection(the reported new covid cases in a time series format) & Dist(delay distribution) in the command window and calling this function in the command window. It has run without giving the previous error of "function requires more input arguments to run". But in the process of running, i get the following error;
"Error using zeros
Requested 474x10000474 (35.3GB) array exceeds maximum array size preference (15.9GB). This might cause MATLAB to become unresponsive.
Error in delaySolve2 (line 29)
coeff=zeros(ilen,ilen+drn);"
Jan
Jan 2021년 5월 27일
drn is the number of elements in the input Dist. This is larger than the available memory.
so how can i solve this?
Jan
Jan 2021년 5월 28일
편집: Jan 2021년 5월 28일
You simply provide some data, which exceed the available RAM. Then the solution is trivial: Either install much more RAM, or reduce the size of the problem.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Programming에 대해 자세히 알아보기

질문:

2021년 5월 25일

편집:

Jan
2021년 5월 28일

Community Treasure Hunt

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

Start Hunting!

Translated by