在MATLAB上增加函数中的变量
我的目标是能够绘制以下图表:在MATLAB上增加函数中的变量,matlab,signal-processing,Matlab,Signal Processing,我的目标是能够绘制以下图表: x(n)=δ(n)+δ(n-1)+δ(n-2)+..+δ(n-10)+δ(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); s
x(n)=δ(n)+δ(n-1)+δ(n-2)+..+δ(n-10)+δ(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)')
错误是
索引超过矩阵维数
如您所见,这是一个终止函数,我希望最终能够绘制类似的图形:
x(n)=delta(n)+delta(n-1)+delta(n-2)+…
您没有向我们展示第二行中的m
是什么,这可能是您问题的根源。此外,如果要在循环中增加向量的值,则必须预先分配向量e
,这也会给您带来越界错误
至于剩下的代码,您可以用简单的input==0
替换dirc(input)
,得到的逻辑值将与数值0
和1
兼容(如果input
是标量,这对您来说似乎是合适的)
事实上,你想要实现的是功能
kmax = 11;
xfun = @(n) ismember(n,0:kmax); %// anonymous function
x(n) = xfun(n); %// evaluate at any specific value n
或者,如果要同时计算多个n
值的x(n)
:
kmax = 11;
xfun = @(n) sum(bsxfun(@eq,n(:),0:kmax),2);%// anonymous function
xvec = xfun(-15:15); %// evaluate at every n simultaneously
您没有向我们展示第二行中的
m
,这可能是您的问题的根源。此外,如果要在循环中增加向量的值,则必须预先分配向量e
,这也会给您带来越界错误
至于剩下的代码,您可以用简单的input==0
替换dirc(input)
,得到的逻辑值将与数值0
和1
兼容(如果input
是标量,这对您来说似乎是合适的)
事实上,你想要实现的是功能
kmax = 11;
xfun = @(n) ismember(n,0:kmax); %// anonymous function
x(n) = xfun(n); %// evaluate at any specific value n
或者,如果要同时计算多个n
值的x(n)
:
kmax = 11;
xfun = @(n) sum(bsxfun(@eq,n(:),0:kmax),2);%// anonymous function
xvec = xfun(-15:15); %// evaluate at every n simultaneously
你在哪里超过了矩阵的维数?你在哪里超过了矩阵的维数?