水光潋滟 发表于 2008-11-21 11:11

怎样调用function函数中的一部分

我需要用一个function函数的一部分,不会调用,大家帮忙看看,具体情况如下
主程序中有这样一个函数=lyapunov(m,data,i-1,P)
我觉得可以用这样一个function   =lyapunov(m,data,N,P)函数来完成
其中个参数已设定,但是主函数中只想实现i=N-m:N这部分功能
因为调用的部分需要完整的数据进行其它功能的实现,所以不能直接取i那一部分的值,只能是从完整的N中取
该怎么办呢?谢谢

sigma665 发表于 2008-11-21 15:23

文字表述太繁琐,举个简单的例子

水光潋滟 发表于 2008-11-21 16:13

function =nearest_point(m,whlsj,whlsl,P)
%参数说明:
%输入:m - 嵌入维数, whlsj - 待分析数据, whlsl - 待分析的数据个数, P - 平均循环周期
%      idx - 最后一个相点的最近相点的位置, min_d - 最后一个相点与其最近相点间的距离 (考虑相角)
%      idx1 - 最后一个相点的最近相点的位置, min_d1 - 最后一个相点与其最近相点间的距离 (不考虑相角)
% *可调参数
% P = 5; %&&选择演化相点距当前点的位置差,即若当前相点为I,则演化相点只能在|I-J|<P的相点中搜寻
min_point=5; %&&要求最少搜索到的点数
MAX_CISHU=5 ;%&&最大增加搜索范围次数
global lmd;

% 相空间重构
LAST_POINT = whlsl-m+1;%相点个数
for j=1:LAST_POINT            
    for k=1:m
      Y(k,j)=whlsj(k+j-1);
    end
end

% 求最大、最小和平均相点距离
max_d = 0.;
min_d = 1.0e+100;
avg_d = 0.;
for i = 1 : LAST_POINT-1
    avg_dd = 0.;
    for j = i+1 : LAST_POINT
      d = 0.;
      for k = 1 : m
            d = d + (Y(k,i)-Y(k,j))*(Y(k,i)-Y(k,j));
      end
      d = sqrt(d);
      if max_d < d
         max_d = d;
      end
      if min_d > d
         min_d = d;
      end
      avg_dd = avg_dd + d;
    end
    avg_dd = avg_dd/(LAST_POINT-i-1+1);
    avg_d = avg_d + avg_dd;
end
avg_d = avg_d/(LAST_POINT-1);

dlt_eps = (avg_d - min_d) * 0.08 ;         % 若在min_eps~max_eps中找不到演化相点时,对max_eps的宽大增幅
min_eps = min_d + dlt_eps / 8 ;            % 演化相点与当前相点距离的最小限
max_eps = min_d + 2 * dlt_eps;         % 演化相点与当前相点距离的最大限
这是我想调用的那个程序的一部分,它完成的事全部数据的功能,在主程序中,我只想循环一部分数据,但是要用这个方法来实现,也不知道表达明白没

ChaChing 发表于 2008-11-21 21:58

对不住! 我真的不了解楼主的问题!

wwbeyondww 发表于 2008-11-22 19:52

函数重构?
页: [1]
查看完整版本: 怎样调用function函数中的一部分