2012-03-30 21 views
0

私のMATLAB関数コードには次のエラーがあります:添え字インデックスは正の整数または論理でなければなりません

???添え字インデックスは、正の整数または論理でなければなりません。

==> AFA at 15 M(k、j)= mean(T(i:sze、j));ここ

は、問題があるコードの一部です:

sz =size(T); 
lim = sz(2) - ordre; 
M = zeros(sz(1),sz(2)); 
r= 0; 
for j=1:sze, 
    k = 1; 
for i=1:lim, 
    M(k,j) = mean(T(i:i+ordre,j)); 
    k = k + 1;  
end 

for i=lim+1:sz(2), 
    M(k,j) = mean(T(i:sz(2),j)); 
    k = k + 1; 
end 
end 
+0

が鳴ります'lim + 1> sz(2)'である。ちょうど推測... – Diego

+0

いいえ、実際にこの時点でordre = 5 –

+0

matlabは画面またはログファイルにデータを印刷できますか?その関数呼び出しの前にすべての変数の状態を出力してから、ログを調べてどのインデックスが不満であるかを確認できますか? – tomlogic

答えて

0

私のために、次の作品はエラーなしordre`が、その後、ゼロである `のよう

T = magic(25);ordre = 5; %# I make up some values here 
sz =size(T); 
lim = sz(2) - ordre; 
%# I've added a check here 
if lim < 1, error('ordre has to be at most sz(2)-1 (is %i)',ordre);end 
M = zeros(sz(1),sz(2)); 
r= 0; 
for j=1:sz(2), %# I needed to change this line (sz(1) works as well) 
    k = 1; 
for i=1:lim, 
    M(k,j) = mean(T(i:i+ordre,j)); 
    k = k + 1;  
end 

for i=lim+1:sz(2), 
    M(k,j) = mean(T(i:sz(2),j)); 
    k = k + 1; 
end 

エンド

+0

あなたが変更した行にsz(1)を置くのではなく、私の場合sze = sz(2)のためにsz(2)を入れてみてください。 –

+0

@TarikMokafih:すべては 'sz(2)'でも動作します。 'T 'の大きさは? – Jonas

+0

私はあなたと一緒に試してみましたが、動作していますが、Tが入力行列である場合、私は関数に渡していません(Tは100 * 4の整数行列です)。 –

関連する問題