2015-03-26 1 views
0

У меня есть два набора данных, одним из которых является целевое положение, а другое - фактическое положение. Я хотел бы построить цель с +/- приемлемым диапазоном, а затем наложить на фактический. Однако этот вопрос касается только целевой позиции.Как я могу нарисовать заполненные прямоугольники в качестве фона для желаемой цели в MATLAB?

Я безуспешно попытался выполнить функции встроенной области, заполнения и прямоугольника. Используя код, найденный в stackoverflow here, он корректен только в определенных областях.

Например

y = [1 1 1 2 1 1 3 3 1 1 1 1 1 1 1]; % Target datum 
y1 = y+1;    %variation in target size 
y2 = y-1; 
t = 1:15; 
X=[t,fliplr(t)];  %create continuous x value array for plotting 
Y=[y1,fliplr(y2)];  %create y values for out and then back 
fill(X,Y,'b'); 

На рисунке производства выглядит следующим образом:

Я бы предпочел, чтобы быть заполнены в красных коробках нарисованных здесь:

T ханк!

ответ

0

Если вы только что нанесли какую-либо функцию y против x, тогда вы можете использовать участок stairs. К счастью для нас, вы можете использовать stairs function как:

[xs,ys] = stairs(x,y); 

создать векторы xs, ys которые генерируют лестницы-участок при использовании функции plot. Теперь мы можем использовать эти векторы для генерации правильных векторов X и Y для функции fill. Обратите внимание, что stairs генерирует векторы-столбцы, так что мы должны перенести их первый:

y = [1 1 1 2 1 1 3 3 1 1 1 1 1 1 1]; % Target datum 
y1 = y+1;    %variation in target size 
y2 = y-1; 
t = 1:15; 
[ts,ys1] = stairs(t,y1); 
[ts,ys2] = stairs(t,y2); 
X=[ts.',fliplr(ts.')];  %create continuous x value array for plotting 
Y=[ys1.',fliplr(ys2.')];  %create y values for out and then back 
fill(X,Y,'b'); 

result

0

Опять же, спасибо hbaderts. Вы ответили на мой вопрос совершенно, однако, когда я применил его к большому набору данных мне нужен для, я получил это изображение

https://dl.dropboxusercontent.com/u/37982601/stair%20fill.png

Я думаю, что это происходит потому, что функция заполнения соединяет вершину заполнить?

В любом случае, для потенциального решения другого человека, комбинируйте предложенный код с функцией лестницы и используйте функцию области.

Опираясь на них друг над другом и устанавливая цвет нижней области как белый, он отображается как прямоугольные фигуры, которые я получил после. снова

%sample code. produces image similar to o.p. 
y = [1 1 1 2 1 1 3 3 1 1 1 1 1 1 1]; 
y1 = y+1;    
y2 = y-1; 
t = 1:15; 
[ts,ys1] = stairs(t,y1); 
[ts,ys2] = stairs(t,y2); 
area(ts,ys1,'FaceColor','b','EdgeColor','none') 
hold on 
area(ts,ys2,'FaceColor','w','EdgeColor','none') 

https://dl.dropboxusercontent.com/u/37982601/stair%20area.png

Спасибо за вашу помощь и указал мне в правильном направлении!