我想在MATLAB中重现以下情节:
例如,请考虑以下时间序列:
a= [1,0.5,0.25, -0.5, -0.75,0.5,1.25, -0.8,0.1,0.2,0,3,0.8, -0.9, -1,1]
如何在一种颜色中绘制高于0的值,在另一种颜色下绘制值?
答案 0 :(得分:1)
诀窍是通过用NaN替换它们的值来避免绘制点。
我建议首先在两个数组中分隔a
,让我们说a_lo
和a_hi
。
a_lo
为a
,但正值替换为NaN
。a_hi
为a
但负值替换为Nan
。所以你会做这样的事情:
a_lo = a;
a_hi = a;
for i = 1:length(a)
if a_lo(i) > 0
a_lo(i) = NaN;
end
if a_hi(i) < 0
a_hi(i) = NaN;
end
end
然后您使用不同颜色绘制a_lo
和a_hi
,不要忘记hold on
将两条曲线绘制在一起。
plot(a_lo,'r'); hold on;
plot(a_hi,'b');
以下是我用正弦波获得的一个例子: