Matlab 为什么我的差距是10倍?

Matlab 为什么我的差距是10倍?,matlab,plot,sampling,convolution,Matlab,Plot,Sampling,Convolution,以下代码非常有效,但输出关闭了10倍: %// Part 3: Discrete-Time Signal Sampling and Recovery %// Original and Sampling W = -3:.1:3; W_for_X = -30:30; H = zeros(size(W)); H(23:37) = 4; nA = -30:.1:30; xnA = cos(.1*pi*nA)-(4*sin(.2*pi*nA)); n = -30:30; xn = zeros(siz

以下代码非常有效,但输出关闭了10倍:

%// Part 3: Discrete-Time Signal Sampling and Recovery
%// Original and Sampling

W = -3:.1:3;
W_for_X = -30:30;
H = zeros(size(W));
H(23:37) = 4;
nA = -30:.1:30; 
xnA = cos(.1*pi*nA)-(4*sin(.2*pi*nA)); 
n = -30:30;
xn = zeros(size(n));
remB = rem(n,4)==0;
xn(remB) = cos(.1*pi*n(remB))-(4*sin(.2*pi*n(remB)));
我很确定问题不在于编码的
W
W_for_X
部分。但是我不知道如何检查。我曾尝试重新缩放两个值,但由于它们必须彼此线性缩放(根据矩阵乘法所需的相关性进行缩放),我认为问题不在这里

我觉得问题出在
N=4
和N=
-30:30
之间。如果
N
保持在4就好了,因为将这个数字改为10倍似乎并不能解决问题

由于
H
Xw
是相乘的,因此
n
必须与
W
W\u进行缩放,以获得X

很明显,该代码的输出被关闭了10倍,如下所示:

左侧图形上的红色输出至少应该看起来与右侧图形相似(确实如此)。问题是代码的哪一部分使输出小了十倍,我如何修复它

旁注:将值
xn
放入
trapz
函数,然后乘以
H
。然后将结果值放入另一个
trapz
函数中,然后显示。代码的这一部分或多或少是我写的另一段代码的遗留部分,我已经检查了这些部分,我很确定问题不在那里。如果你认为这是一件好事,请随意说

编辑/澄清-1

输入是左侧的蓝色绘图,即
xnA
。左侧的红色虚线图是输入的样本
xn
。左侧的红色曲线图是由未包含在原始代码中的变量
y
给出的输出

为了澄清,左边的红色图应该类似于右边的蓝色图。虽然它有点锋利,但它的基本形状是一样的

您必须查看图形的
X轴上的数字才能看到差异。虽然一个看起来是一样的,但它发生的频率是1:10(从左蓝色到右红色),也就是说它从
-30:30
-3:3
图的另一幅图,红色输出放在蓝色输入上,如下所示:

生成此图像的代码如下所示:

figure(1);
subplot(1,2,1);plot(nA,xnA,n,xn,'r--o');
subplot(1,2,2);plot(nA,xnA,W,y,'r');
xn
将其移动到频域时,执行傅里叶变换,然后通过
H
将其
*
移动,然后将其乘积逆傅里叶变换回时域并绘制。我画这张图的方式会缩小x轴吗?

替换

W


绘图行中(nA,xnA,W,y,'r')
进行绘图。

左侧和右侧绘图代表哪些信号?你说的10的系数在哪里?左边的红色输出看起来不像右边的图形…如果您包含用于绘制我们在这里看到的两个图的代码,可能会有所帮助。这很可能是绘制图形的问题。据我所知,您的输出似乎很好。请提供用于生成绘图的代码行。
子绘图(1,2,2)中的
y
;图(nA,xnA,W,y,'r')?是什么要求它与
W
作图?@Roneymael你是正确的,正如答案所指出的,我只是简单地将
作图
W
相关,而它本应该是
W_for_X
W_for_X