首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MATLAB上增量函数中的变量

在MATLAB上增量函数中的变量
EN

Stack Overflow用户
提问于 2016-02-07 21:06:44
回答 1查看 349关注 0票数 0

我的目标是能够绘制以下图:

x(n)= delta(n)+delta(n-1)+delta(n-2)+….+delta(n-10)+delta(n-11)

我写了这段代码:

代码语言:javascript
复制
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如下:

代码语言:javascript
复制
function output = dirc(input)
output = 0;
if input == 0
    output = 1;
end
end

错误是

指数超过矩阵维数

正如您所看到的,这是一个终止函数,我希望最终能够绘制这样的图:

x(n)= delta(n)+delta(n-1)+delta(n-2)+….

EN

回答 1

Stack Overflow用户

发布于 2016-02-07 21:27:10

您没有向我们展示第二行中的m,这可能是问题的根源。此外,如果要在循环中增加向量e的值,则必须预先分配向量,这也会给出超出界限的错误。

至于代码的其余部分,您可以使用简单的dirc(input)替换input==0,得到的逻辑值将与数值01兼容(如果input是标量的话,这似乎就是您的情况)。

事实上,你想要实现的是

代码语言:javascript
复制
kmax = 11;
xfun = @(n) ismember(n,0:kmax);  %// anonymous function
x(n) = xfun(n);                  %// evaluate at any specific value n

或者,如果您想一次计算多个n值的n

代码语言:javascript
复制
kmax = 11;
xfun = @(n) sum(bsxfun(@eq,n(:),0:kmax),2);%// anonymous function
xvec = xfun(-15:15);                       %// evaluate at every n simultaneously
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35259109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档