Matlab 为什么我的差距是10倍?
以下代码非常有效,但输出关闭了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
%// 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