我有一个矩阵,其中某些值-1
表示存在错误。通常我只会使用ylim([0 100])
来不在我的图形中显示这些值,但是当使用折线图时,连接仍然会下降到点。我想要一个由线条组成的图表,而不是散点图。有没有一种简单的方法可以在绘制线条时忽略负值,而在 MATLAB 中使用绘图函数时仅连接正值?
我写了一个行为相似的小示例程序,但我使用的方式似乎有点"太复杂",我想知道是否有更简单的方法来实现这一点。当我将值放入NaN
时,它工作正常,现在x
和y
值的数量相同。但是,从向量中删除或整理值将导致不同的x
量和y
值。
我希望进行修改或标志或其他东西。
x = 2*rand(10) - rand(10)
xx = 10:10:100;
figure;
for i=1:length(x)
for j=1:length(x(i,:))
if x(i,j) < 0
x(i,j) = NaN;
end
end
end
plot(xx,x)
请注意,这只是一个例子,整个代码太大,无法在此处发布。
当具有不对应的x
值时(因此绘图函数仅对相应的y
值使用1,2,3...
等),这可以通过使用
plot(x(x>0))
在这种情况下,相应的值是不同的,在实际代码中它们是测量数据,在这里我只是使用第 10 步进行简化。
x = 2*rand(10) - rand(10)
xx = 10:10:100;
plot(xx,x(x>0))
上面的代码将出现错误,并显示消息"矢量必须相同长度"。
这就像使用NaN
而不是负值一样,只是原始向量根本没有被修改。您可能会注意到此解决方案是矢量化的。
y = 2*randn(10,1) - randn(10,1);
figure(); plot(1:numel(y), y./(y<=0) );
a = [50, -1, 10, 5, 8, 22, -1];
b = a > 0;
c = a(b);
输出:
c
[50, 10, 5, 8, 22]
现在你可以绘制c
[~, s] = size(c);
xx = 1:1:s;
您也可以直接执行此操作,而无需保存计算并对其进行修改。 只是绘图它。plot(x(x>0))