我的目标是能够绘制以下图:
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)+….
发布于 2016-02-07 21:27:10
您没有向我们展示第二行中的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或者,如果您想一次计算多个n值的n:
kmax = 11;
xfun = @(n) sum(bsxfun(@eq,n(:),0:kmax),2);%// anonymous function
xvec = xfun(-15:15); %// evaluate at every n simultaneouslyhttps://stackoverflow.com/questions/35259109
复制相似问题