考虑到这样的数据:
>> x = [0,3.0001,7,9];
>> y = [0 1 0 1];
>> plot(x, y);
我需要的图形看起来像一个数字信号,而不是一个线性插值(见灰色和蓝线)。
为什么??(你真的不需要看这个):
我正在绘制传感器给出的事件,所以我必须绘制传感器的当前状态随时间的变化。事件不会以给定的频率刷新。我只知道感应器状态改变的时间。我的数据集是这样的:
传感器1在时间0
传感器2准时0.05
传感器1关闭时间1.15
传感器2关闭时间1.55
..。
我不知道MATLAB或八度是否被用于绘制这种信号。
发布于 2015-11-30 03:30:56
使用楼梯
figure;
stairs(x,y);
或
x = [0,3,7,9];
y = [0 1 0 1]; % Input
在绘制之前添加此代码:
x1(1) = x(1);
j = 2;
for i=2:numel(x)
x1(j) = x(i);
j =j+1;
x1(j) = x(i);
j=j+1;
end
x1
j = 1;
for i=1:numel(y)-1
y1(j) = y(i);
j =j+1;
y1(j) = y(i);
j=j+1;
end
y1(j) = y(end);
y1
结果:
x1 = [0, 3, 3, 7, 7, 9, 9]
y1 = [0, 0, 1, 1, 0, 0, 1]
plot(x1, y1);
发布于 2015-11-30 03:31:04
我不知道MATLAB中是否有这样的情节。但你可以把这个情节从片段中绑起来。
x=[0,3.0001,7,9];
y=[0 1 0 1];
ax = axes;
for iSegment = 1:numel(x)-1
jump = y(iSegment)+1 - y(iSegment);
line([x(iSegment) x(iSegment+1)], [y(iSegment), y(iSegment)]);
if jump < 0
line([x(iSegment) x(iSegment)], [y(iSegment), y(iSegment+1)]);
elseif jump > 0
line([x(iSegment+1) x(iSegment+1)], [y(iSegment), y(iSegment+1)]);
end
end
https://stackoverflow.com/questions/33996874
复制