如何在matlab中绘制?

matlab plot matlab-figure figure

58 观看

1回复

6 作者的声誉

我有以下代码

xr=randi([1 150],1,20)
    z=numel(xr);
    N=10;  %Window length
    gAll=zeros(1,z-N+1);
    for n=0:z-N;
        x=xr(1+n:N+n)
      d=max(x);
        m=numel(x);
        y=zeros(d,1);
        p=zeros(d,d);
        for k=1:m-1
        y(x(k))=y(x(k))+1; 
        p(x(k),x(k+1))=p(x(k),x(k+1))+1;
        end
        p=bsxfun(@rdivide,p,y);
        p(isnan(p)) = 0; 
        j=prod(p(p~=0));
        [~,~,idx] = unique(x);
        q=prod(hist(idx,1:max(idx))/numel(x));
        s=log(j);
        l=log(q);
        g=s+l
    gAll(n+1)=g;
    end
    plot(gAll)

我想要一个图,对于gAll = -22的阈值线,阈值线上方的图应为红色,而阈值线下方的图应为蓝色,但是该图应与这两种不同的颜色连续连接,该怎么做。

作者: Ram Shivshankar 的来源 发布者: 2016 年 5 月 18 日

回应 (1)


0

1363 作者的声誉

您可以通过将值设置为来掩盖图形的区域NaN。我将创建一个数据的高分辨率插值gAll,然后创建两个副本,一个gAll>-22被遮罩,一个gAll<-22被遮罩,并在相同的轴上绘制它们。

你可以让gAll_HR你的向量的高分辨率版本gAllx_HR使用interp1(x, gAll, x_HR),然后替换值NaN使用逻辑索引:

gAll_low = gAll_HR;
gAll_low(gAll_HR>=-22) = NaN;
gAll_high = gAll_HR;
gAll_high(gAll_HR<-22) = NaN;

plot(x_HR, gAll_low, 'b-', x_HR, gAll_high, 'r-')
作者: Steve 发布者: 18.05.2016 02:06
32x32