2012-04-12 22 views
1

コンパイル時に、 "エポック"が変数であると判断され、この 変数が初期化されていません。 "エポック"も関数名であり、以前のバージョンのMATLABの がこの関数を呼び出していました。 しかし、MATLAB 7では、同じ名前の関数を変数と変数の両方として使用することは禁じられています。なぜMatlabに初期化されていない変数がありますか?

function slope1_4=s(x,m) 
A=xlsread(x); 
slope1_4=[]; 
%B=xlsread(y); 
%nbligneA=size(A,1); 
%nbcolonneA=size(A,2); 
%nbligneB=size(B,1); 
%nbcolonneB=size(B,2); 
for j=m %nbcolonneA 
    clear ini; 
    clear fin; 
    ini=epoch(:,A(1,j),1); 
    fin=epoch(:,A(1,j),2); 
    ini(ini==0)=[]; 
    fin(fin==0)=[]; 
    for i=1:size(ini,1) 
     clear f; 
     clear a; 
     clear b; 
     clear y; 
     debut=ini(i); 
     ending=fin(i); 
     interval=ending-debut+1; 
     a=A(debut+1:ending+1,j); 
     for y=1:interval 
      f(y)=a(y); 
     end 
     y=1:interval; 
     b=polyfit(y,f,1); 
     slope1_4=[slope1_4,b(1)]; 
    end 
end 

問題は、おそらくから来る ":":「することができます(A(1、j)は、1)が、私はこの問題を解決する方法がわからない...

答えて

2

エポックに関数への引数として:を渡します。 A colonは変数へのインデックスとしてのみ有効です。したがって、MATLABはepochが変数であると想定しています。しかし、まだ初期化していない変数からデータを抽出することはできません。そのため、エラーが発生します。

あなたの関数epochは、最初の引数としてインデックス(またはインデックスの範囲)が必要です。だからスカラーインデックスか、返すべきデータインデックスのベクトルをそれに供給しなければなりません。あなたはそれが(すなわちすべての可能なインデックス用)すべてデータを返すようにしたいが、あなたは、あなたがepochを呼び出すときに、データがどのように大きなわからない場合、あなたは、引数としてコロン文字列を渡すことができますこのように:

ini=epoch(':',A(1,j),1); 
fin=epoch(':',A(1,j),2); 
+0

ここに私の機能エポックは 機能エポック=無題(epochn、車、inifin) 負荷data.mat レース= data.citです。 for j = 1:race.total_players i = 1:max(race.epoch_based_on_hyy(:、j)) tempindex = find(i == race.epoch_based_on_hyy(:、j)); epoch_intv(i、j、1)= tempindex(1); epoch_intv(i、j、2)= tempindex(end); end end epoch = epoch_intv(epochn、car、inifin); エンド 入力引数が数1,2,3 ... –

+0

は エポック= epoch_intvを持つのではなく、私の機能では、 は、私はまた、他の方法を発見し、それが働いてありがとうなければなりません(epochn、車、inifin)私は今epoch_intv(:、car、inifin)を持っており、エポックは2変数関数になりました! –

関連する問題