2017-06-07 193 views
0

我已經在我的一個Signals類的深處被拋出。我正在嘗試學習Octave,以便我可以完成家中教授所需的Matlab任務(我還沒有接受過Matlab的任何教育)。初學Matlab函數只繪製零點

我一直在閱讀儘可能多的,但我似乎無法弄清楚爲什麼這個函數似乎只返回0.我認爲我失去了一些基本的東西,但我不知道是什麼。

t = [-1:0.1:5]; 

% (a): The Unit-step Function u(t) 
function u = u (t) 
    if(t >= 0) 
     u = 1; 
    else 
     u = 0; 
    end 
end 

plot(t, u(t)); 
+0

因爲函數中的u是一個標量而不是矢量。嘗試初始化'u =零(size(t))'和'u(t> = 0)= 1'。這應該做到這一點。 – kedarps

回答

1

問題就出現了,因爲該函數進入載體,並返回一個標量,所以情節繪製錯誤。

一種解決方案:

一種可能的解決方案是創建用零()新的向量,然後通過與如果選擇輸出與迭代。

t = [-1:0.1:5]; 

% (a): The Unit-step Function u(t) 
function u = u (t) 
    u = zeros(size(t)); 
    for i=1:length(t) 
     if(t(i) >= 0) 
      u(i) = 1; 
     else 
      u(i) = 0; 
     end 
    end 
end 
plot(t, u(t)); 

第二溶液:

另一種解決方案是使用MATLAB /倍頻程的屬性來處理向量運算。

t = [-1:0.1:5]; 

% (a): The Unit-step Function u(t) 
function u = u (t) 
    u = t>=0 
end 
plot(t, u(t)); 
+0

謝謝!這很有道理。 另外,第二種解決方案非常巧妙。 – MushinZero