2015-09-01 180 views
1

我寫了下面的代碼。我希望該函數返回矩陣D & S,但此時它只是返回等於S的矩陣'ans'。任何建議將不勝感激。謝謝。帶兩個輸出的寫入功能

function [D,S] = sdQRS(QRS_cell) 
%scales & dilates QRS complexes 

m = length(QRS_cell{1}(:,1)); 
n = length(QRS_cell); 


d1 = linspace(0.5,1.0,10); 
d2 = linspace(1.0,2.0,21); 
d = vertcat(d1',(d2(2:21))'); 

s1 = linspace(0.6,1.0,13); 
s2 = linspace(1.0,1.5,18); 
s = vertcat(s1',(s2(2:18))'); 

DIL = cell(n,1); 
SCAL = cell(n,1); 
for i = 1:n 
    DIL{i} = zeros(m,length(d)); 
    SCAL{i} = zeros(m,length(d)); 
    for j = 1:length(d) 
     DIL{i}(:,j) = interp1(QRS_cell{i}(:,1),QRS_cell{i}(:,2),QRS_cell{i}(:,1)/d(j),'linear','extrap'); 
     SCAL{i}(:,j) = s(j)*QRS_cell{i}(:,2); 
    end 
end 

D = zeros(n); 
S = zeros(n); 
for k = 1:n 
    for l = 1:n 
     e = []; 
     t = []; 
     for a = 1:length(d) 
      e(a) = euc_dilQ(QRS_cell{k},QRS_cell{l},d(a)); 
      t(a) = euc_scalQ(QRS_cell{k},QRS_cell{l},s(a)); 
     end 
     [M,E] = min(e); 
     [M,T] = min(t); 
     D(k,l) = d(E); 
     S(k,l) = s(T); 
    end 
end 
+0

在我看來調用該函數,它始終是一個可怕的設計決定允許的功能返回單獨的對象。我強烈建議(如果你必須堅持使用matlab)而不是'foo = myfunc(x)'並且在內部設置'foo.D = D; foo.S = S' –

回答

1

您可以指定一個Matlab函數來返回任意數量的輸出值。你的情況函數簽名會看起來像

function [D,S] = sdQRS(QRS_cell) { 
    d1 = linspace(0.5,1.0,10); 
    ... 
} 

現在,你可以通過輸入

[D,S] = sdQRS(QRS_cell); 
+0

哦。我只是錯誤地稱呼它。這很尷尬。謝謝! – neil