1

コンパイル時に、「エポック」は変数であると判断され、この変数は初期化されていません。「エポック」も関数名であり、以前のバージョンの MATLAB では関数を呼び出していました。ただし、MATLAB 7 では、同じコンテキストで関数と変数の両方に同じ名前を使用することは禁止されています。

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

問題はおそらく epoch(:,A(1,j),1) の「:」に由来しますが、この問題を解決する方法がわかりません..

4

1 に答える 1

2

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

関数epochは、最初の引数としてインデックス (またはインデックスの範囲) を想定しています。そのため、返してほしいデータのスカラー インデックスまたはインデックスのベクトルを指定する必要があります。すべてのデータ (つまり、考えられるすべてのインデックス)を返したいが、 を呼び出したときにデータの大きさがわからない場合は、次のようepochにコロン文字列を引数として渡すことができます。

ini=epoch(':',A(1,j),1);
fin=epoch(':',A(1,j),2);
于 2012-04-12T20:10:59.580 に答える