我将根据频率绘制一个名为force的参数。 我的情节将是一个半月形的情节(我的意思是" Y"方向它应该是对数的)但是我知道力在某些频率是负的,所以在对数图中它不能被绘制。 总而言之,我想要的想法是,我想绘制半对数的力,并且在图中也有不同颜色的负面部分。 semilogy(频率,ABS(力(2800,:))) 我不知道如何改变负面部分的颜色。 谢谢
答案 0 :(得分:2)
这个答案与this other answer基本相同,但更详细一点。
采用以下样本数据集:
freq = linspace(0, 2*pi);
force = 1e6*sinc(freq);
force
是一个包含正值和负值的向量,因此,如果我们对此数据使用semilogy
,我们将只得到正值的对数图(如您所述):
>> semilogy(freq, force, 'b*');
Warning: Negative data ignored
如果要绘制负值的绝对值,可以使用logical indexing查找负值的索引,如下所示:
idx = force < 0;
然后在同一轴上以红色绘制这些值:
hold on;
semilogy(freq(idx), abs(force(idx)), 'r*');
您也可以使用此语法生成相同的结果:
semilogy(freq, force, 'b*', freq(idx), abs(force(idx)), 'r*');
答案 1 :(得分:1)
我会使用logical indexing:
freq = 0:1000; % frequency vector
force = 10*rand(size(freq))-5; % some random data between -5 and +5
semilogy(freq(force>0),force(force>0),'b-',freq(force<0),abs(force(force<0)),'r-')
给出了以下情节: