比较Matlab中的元素和绘图

时间:2014-10-20 13:37:59

标签: matlab matlab-figure

我有两个包含数字的文件。我使用一个数字来计算骨骼的最大压缩数,而另一个数字是骨骼上的压缩数。如果第二个数字高于最大压缩数,我想用红色绘制点,如果它小于那么它应该是绿色。
我的问题是我的所有圆点都是红色的,尽管大多数应该是绿色的。我试图通过打印出H和C矢量来调试它,并且有100个数字应该是红色而其余的是绿色。任何帮助或提示都表示赞赏。

这是我的代码

p=VarName5;
c=VarName7*2.5; %%The compression that is on the bone
if p<0.317;
  H=10500*p.^1.88; %%Calculate max compression the bone handles
else 
  H=114*p.^1.72; %%Calculate max compression the bone handles
end
if(c < H) %% if the compression on the bone is smaller then max compression
  plot(p,c,'+G') %% plot using green+
  hold on
else
  plot(p,c,'+R')  %if the compression is higher than max compression use red+
end
hold off

1 个答案:

答案 0 :(得分:2)

您可以创建一个逻辑向量,其中所有大于最大值的元素都是1,而所有其他元素都是0:

ind = c > H;
plot(p(ind),c(ind),'+R')
hold on
plot(p(~ind),c(~ind),'+G')

然后您可以单独绘制它们。

用一些随机数据来说明:

c = repmat([1:6 7:-1:1],1,2);  %// The compression
H = rand(1,numel(c))*8; %// The compression the bone handles (in this case: random)
p = 1:numel(c);

ind = c > H;  %// Index of elements where the bone is compressed more than it handles.
plot(p(ind),c(ind),'+R')
hold on
plot(p(~ind),c(~ind),'+G')

enter image description here

我会让您知道如何在代码中实现它。