[英]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.