我的程序就是要求出tau和m,得到data数据后我在主窗口键入[tau,m]=CC_Method(data),运行这个程序可是却出现:
??? Undefined function or variable "tau".
Error in ==> CC_Method at 58
m=round(Tscor/tau)+1;
请各位大大帮忙解决~~下附程序:
function [tau,m]=CC_Method(data)
x=data;
x=x';
X = [x-mean(x)]/[max(x)-min(x)];
% 归一化到均值为 0,振幅为 1
maxLags = 100;
% 最大时延
m_vector = 2:5;
% m 取值范围
sigma = std(X);
r_vector = sigma/2*[1:4];
% r 取值范围
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %初始化
S_mean = zeros(1,maxLags);
Sj = zeros(1,length(r_vector));
delta_S_mean = zeros(1,maxLags);
delta_S = zeros(length(m_vector),maxLags);
for t = 1:maxLags
temp = 0;
for i = 1:length(m_vector)
for j = 1:length(r_vector)
m = m_vector(i);
r = r_vector(j);
S = ccFunction0(m,X,r,t);
% 文献中公式(13)
temp = temp + S;
% 文献中公式(17)
Sj(j) = S;
end
delta_S(i,t) = max(Sj)-min(Sj);
% delta_S(m,t),文献中公式(15)
end
S_mean(t) = temp/(length(m_vector)*length(r_vector)); % 文献中公式(17)
delta_S_mean = mean(delta_S);
% 文献中公式(18)
end
S_cor = delta_S_mean + abs(S_mean);
% 文献中公式(19)
for t=1:maxLags
if S_mean(t)==0
St=t;
break
end
end
for t=1:maxLags-1
if delta_S_mean(t) CC_Method at 58 你的程序运行到最后一行报错,原因 是 变量"tau"没有定义。大概看了下你的程序,在这里用到"tau",
if delta_S_mean(t)<delta_S_mean(t+1)
tau=t;
break
end如果到最后提示"tau"没有定义,应该是这个条件(delta_S_mean(t)<delta_S_mean(t+1)) 没有得到满足,所以tau=t这一句没有得到执行。要消除这个错误,你可以在这里设个断点看 |