2014-03-05 75 views
1
for control=1:7 
    name=strcat('tau: ', num2str(TD(control)),' PLD: ', num2str(PLD(control))); 
    fprintf('Control: %i/7\n', control) 
    Maps(control) = struct('GradOFF', [], 'GradON', []); 
    for lin=1:size(data(subject).perf_w_off,1) 
     fprintf('Lin: %i/64\n', lin); 
     for col=1:size(data(subject).perf_w_off,2) 
      [x1, fval, exitflag, output] = fminunc(...) 
      Maps(control).GradOFF(lin,col) = abs(x1(2)); 
      [x2, fval, exitflag, output] = fminunc(...) 
      Maps(control).GradON(lin,col) = abs(x2(2)); 
     end 
    end 

    min1 = min(min(Maps(control).GradOFF)); 
    min2 = min(min(Maps(control).GradON)); 
    min = min([min1, min2]); 
    max1 = max(max(Maps(control).GradOFF)); 
    max2 = max(max(Maps(control).GradON)); 
    max = max([max1, max2]); 

    figure(map1); 

    subplot(2,7,control) 
    image1 = mat2gray(Maps(control).GradOFF,[min, max]); 
    imshow(image1,[]); 
    title(strcat(name, ' Grad Off')) 

    subplot(2,7, control+7) 
    image2 = mat2gray(Maps(control).GradON,[min, max]); 
    imshow(image2,[]); 
    title(strcat(name, ' Grad On')) 
end 

這段代碼似乎沒有出錯。第一個循環(控制中的一個)運行良好。但是,當再次通過循環(control = 2)時,在執行min1 = min(min(Maps(control).GradOFF))時會顯示錯誤消息。它說:下標索引必須是實數正整數或邏輯使用分

下標索引必須是真正的正整數或邏輯。

但是當我在做mean(mean(Maps(control).GradOFF))它正在工作。有人能告訴我什麼可能會出錯min不會與mean

+0

另請參閱[此問題](http://stackoverflow.com/questions/20054047/subscript-indices-must-either-be-real-positive-integers-or-logicals-generic-sol)for a [generic方法](http://stackoverflow.com/a/20054048/983722)來處理這個錯誤。 –

回答

3

你在這一行定義一個變量min

min = min([min1, min2]); 

一旦你這樣做,min1 = min(min(Maps(control).GradOFF));被解釋爲參考變量min,而不是功能,因此錯誤的第二次周圍。重命名該變量,使其不具有與該函數相同的名稱。 max = max([max1, max2]);也是一樣,如果你不糾正它會給你同樣的問題。

+0

太愚蠢了!感謝您的幫助。我一遍又一遍地看了這些話,從來沒有看到那個錯誤。 – user3383348

相關問題