尝试answer是一个最近的问题,我遇到了stem
的奇怪行为。试试这个:
x = [1+j 2-j 3+j 4-j];
stem(x)
在我的Matlab版本(2010b)上,它绘制了
x
的虚部,而不是我所期望的实部。相反,stem(1:length(x),x)
绘制
x
的实部,该实部与plot(1:length(x),x)
的行为一致。您能想到
stem(x)
绘制x
的虚部而不是实部的任何原因吗?特别是当stem(1:length(x),x)
绘制实部时。还是我们应该得出结论,这是一个错误? 最佳答案
据我所知,这是部分正确的行为。输入虚数时,实数和虚数分量均被视为x和y值对(即xychk.m
和x = real(y); y = imag(y);
中的值)。因此,这解释了为什么虚部在y轴上。
但是,当您使用第二个参数输入x轴值时,它将从第一个输入参数获取x轴值,并将y
的实数部分视为y轴数据。具体来说,当调用stem(1:length(x),x)
时,stem.m
将创建一个specgraph.stemseries
,并为其提供YData
的复杂值。但是,似乎YData
无法保存复杂数据,并且保留了实际部分。这看起来像个错误,但如果plot
文档应用于stem
,则似乎是设计使然。
关于plot
命令的stated by MathWorks(显然适用于stem
):
David和Daniel R.指出的stem
和stairs
中确实存在一个错误,其中没有使用第一种(单参数)语法设置正确的XData
。 stem.m
中的错误的来源似乎在这里:
if hasXData
xdata = {'XData', datachk(x(:,k))};
end
问题是hasXData
在上面由hasXData = nargs ~= 1;
设置。我认为这可能应该是这样的:hasXData = nargs ~= 1 || ~isreal(args{1});
关于matlab - 具有复数x的stem(x)的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19943231/