我的目标是能够绘制以下内容:
x(n)= delta(n)+delta(n-1)+delta(n-2)+….+delta(n-10)+delta(n-11)
我写了这段代码:
n = -15:15
e(m) = dirc(n(m));
k = 1
for m = 1 : length(n)
while k < 12
e_1(m) = dirc(n(m)-k);
k = k + 1
end
e(m) = e(m) + e_1(m)
end
subplot(4,4,5);
stem(n,e,'m','markersize',3,'linewidth',1)
xlabel('n')
ylabel('\delta[n]')
title ('(e)')
我写了函数dirc如下:
function output = dirc(input)
output = 0;
if input == 0
output = 1;
end
end
错误是
指数超出矩阵维度
正如您所看到的,这是一个终止功能,我希望能够最终绘制这样的图形:
x(n)= delta(n)+delta(n-1)+delta(n-2)+….
答案 0 :(得分:2)
你没有向我们展示第二行中m
是什么,这可能是你问题的根源。此外,如果要在循环中递增其值,则必须预先分配向量e
。这也可以为您提供越界错误。
至于代码的其余部分,您可以仅使用dirc(input)
替换input==0
,结果逻辑值将与数字0
和1
兼容(以防万一) input
是标量,这似乎是你的情况。)
事实上,你想要实现的是功能
kmax = 11;
xfun = @(n) ismember(n,0:kmax); %// anonymous function
x(n) = xfun(n); %// evaluate at any specific value n
或者如果您想同时为x(n)
的多个值计算n
:
kmax = 11;
xfun = @(n) sum(bsxfun(@eq,n(:),0:kmax),2);%// anonymous function
xvec = xfun(-15:15); %// evaluate at every n simultaneously