我有一个包含数据和偏移量的序列。我要求从偏移处开始绘制数据的干()图。我已经找到了数据部分(简单部分)以及如何更改窗口以包含偏移量,但是当我绘制图形时,它会显示偏移值为零和零,直到1,其中sequence.data将启动和积分。
methods
function s = sequence(data, offset)
s.data = data;
s.offset = offset;
end
function stem(x)
% STEM Display a Matlab sequence, x, using a stem plot.
stem(x.offset,x.data);
axis([x.offset x.offset+length(x.data) 'auto' 'auto']);
end
我需要弄清楚如何移动"我的x.data到我的x.offset并开始在那里绘制。
答案 0 :(得分:1)
我不明白为什么在保持x
数据相同的情况下,您无法添加y
偏移量?
例如,在上面的评论中给出了您的示例:
x = 0:4;
y = 1:5;
这是原始图表的样子,以及将图表向左移动3(-3
):
stem(x,y,'b');
hold on;
stem(x-3,y,'r');
这就是我得到的:
蓝色数据是原始数据,而红色数据是向左移动的实例3.正如您所看到的,y
数据是相同的,但x
点移动到3.您的代码实际上在做的是不移位实际数据。您只是更改stem
图表的显示范围。因此,你应该这样做:
methods
function s = sequence(data, offset)
s.data = data;
s.offset = offset;
end
function stem(x)
% STEM Display a Matlab sequence, x, using a stem plot.
%// First define sequence from [0,N-1]
vals = 0:numel(x.data)-1;
%// Now use the above and manually shift the x coordinate
stem(vals+x.offset,x.data);
end
我将假设x
轴上的数据从0
开始计数,因此我们将声明从0
到{{1}的序列其中N-1
是您拥有的元素总数。一旦我们声明了这个序列,当它绘制N
图时,我们只需在此序列中添加一个偏移量并将其用作stem
数据。 x
数据应保持不变。
但是,我认为创建一个用于实现y
添加的自定义类的可读性低于我最初的做法。如果这是你要开发的任何要求,那么一定要继续这样做,但我并不认为这是必要的。