Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB上增加函数中的变量_Matlab_Signal Processing - Fatal编程技术网

在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

你在哪里超过了矩阵的维数?你在哪里超过了矩阵的维数?