2012-04-12 202 views
1

在編譯時,「epoch」被確定爲變量,並且此變量未初始化。 「epoch」也是一個函數名,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;對於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 ... – 2012-04-12 20:21:13

+0

謝謝它的工作,我 也發現了其他的方式,在我的功能,而不必 劃時代= epoch_intv的(epochn,汽車,inifin)我現在有epoch_intv(:,car,inifin),現在是一個2變量函數! – 2012-04-12 20:37:34

相關問題