簡體   English   中英

MATLAB:單位步長函數

[英]MATLAB: Unit step function

由於某些原因,當我嘗試創建一個簡單的單位步進函數時,我只會收到一條直線。 我很確定這是正確的,但是我的圖表告訴我否則。 我做錯什么了嗎?

function mone=myOne(t)

[n,~] = size(t);

mone=zeros(n,1);

for i=1:n,

    if (t(i)>0), 

        mone(i) =  1;

    end
end

在命令窗口中,

t = [-5:0.01:5]

plot(t, myOne(t))

錯誤是您的行:

[n,~] = size(t);

您僅查詢t的第一個維度,即1以下

t = [-5:0.01:5]
size(t)

ans =

       1        1001

您可以移調t

t = [-5:0.01:5].';
size(t)

ans =

        1001           1

或者您用length而不是size

n = length(t);

最后,@ Dan提出的沒有循環的解決方案要快得多。

我看不到您的函數背后的邏輯有什么問題,但是您的實現過程很長。 在Matlab中,您可以執行以下操作:

function mone=myOne(t)
    mone = t > 0;
end

或者如果您想獲取數字矩陣而不返回邏輯,請嘗試

function mone=myOne(t)
    mone = (t > 0)*1;  %// Or if you prefer to cast explicitly:
                       %// double(t>0)
end

還要添加一個默認設置為零的shift參數:

function mone=myOne(t, T)

    if nargin < 2
        T = 0;
    end

    mone = (t > T)*1;

end

用法:

t = [-5:0.01:5]
plot(t, myOne(t))
plot(t, myOne(t,3))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM