这是完整的错误消息:
??? Undefined function or variable "Indicator".
Error in ==> vidya at 44
Indicator(i)=k*sc*Index(i)+(1-k*sc)*Indicator(i+1);
Error in ==> PnL at 22
[Fast] = vidya(Indicator,Shorter_Fast,Longer_Fast);
Error in ==> DEVolSys at 139
Ftemp=OF(data.Indicator,data.Daily_PnL,Pu(1,ii),Pu(4,ii),Pu(2,ii),Pu(5,ii),Pu(3,ii),Pu(6,ii),MinVol);
Error in ==> Optimser at 15
MA_lengths=DEVolSys(de,dataList,@PnL);
当调用下面的函数时,我偶尔会收到错误???Undefined Function or variable Indicator。
根据matlab编译器,这条线导致了问题
Indicator(i)=k*sc*Index(i)+(1-k*sc)*Indicator(i+1);
这很奇怪,因为通常这些问题与存储在错误位置的函数文件或未初始化使用的变量有关。
但是,这个函数作为优化方案的一部分被反复调用,而且似乎大多数时候它都能正常工作,但偶尔我会收到上面的错误?
看起来问题参数集可能会导致问题,但我无法理解问题参数集如何导致这样的问题?还有数以千计的参数来测试每个参数,我需要经过数百个步骤。我想尝试了解可能导致问题的原因,所以如果没有别的,我知道要寻找什么。
因此,如果有人可以解释可能导致此类问题的原因或调试此类问题的好方法,那就太好了,
function [Indicator] = vidya(Index,Short,Long)
End_Index=1;
Start_Index=size(Index);
if Short>Long
TestVal=Short;
else
TestVal=Long;
end
for i=Start_Index:-1:End_Index
if(i>Start_Index-(TestVal+2))
Indicator(i)=Index(i);
else
Slow=std(Index(i:i+Long-1));
Fast=std(Index(i:i+Short-1));
k=Fast/Slow;
sc=2/(Short+1);
Indicator(i)=k*sc*Index(i)+(1-k*sc)*Indicator(i+1);
end
end
结尾