除了要绘制的常规数据外,我还尝试绘制一组水平恒定线,它们表示常规数据中的重要阈值。常量的数量是可变的,来自一个数组。
例如,如果在1、2和3处有3个阈值,则数组将是thresholds = 1、2、3。如果在1、4、7和10处有4个阈值,则它将是thresholds =1、4、7、10。
我使用一个特殊的绘图函数(让我们称其为plot_special)来绘制数据。它只需要先取x轴,其余的参数就是要绘制的数据。因此,在一些随机数据具有四个以上阈值的情况下,它将是:
t = time for the data
data1 = some data already created
data2 = some other data already created
thresholds = [1,4,7,10];
f = ones(size(t));
plot_special(t, data1, data2, f*thresholds(1), f*thresholds(2), f*thresholds(3), f*thresholds(4));
问题是阈值可以是可变长度的,所以我非常需要一种方法来迭代阈值,就像我在上面的例子中所做的那样。显然,我需要使用size(阈值),但我不确定如何将其全部包含在函数调用中。
发布于 2017-12-14 20:42:22
有一种更简单的方法:只需将thresholds
传递给您的函数:
plot_special(t, data1, data2, thresholds);
在函数内部,您可以绘制阈值,因为您已经有了可用的t
。您不需要为每个t
绘制阈值,只需要绘制第一个和最后一个值的阈值。您甚至不需要循环来完成此操作,因为y值矩阵将根据与行维度相匹配的x向量按列绘制(感谢@excaza):
x = [t(1); t(end)];
y = repmat(thresholds(:)', [2, 1]);
plot(x, y)
https://stackoverflow.com/questions/47821472
复制相似问题