Strona 1 z 1

[Matlab] Modyfikacja legendy

: 15 lip 2020, o 19:57
autor: olkaaa
Hej!
Mam problem wydawałoby się bardzo prosty, ale niestety dotychczas nie udało mi się znaleźć dla niego rozwiązania.
Rysuję funkcje zmienną przedziałami. Tzn. przykładowo mam trzy przedziały
\(\displaystyle{ 0<x_1 \le 100 }\)
\(\displaystyle{ 100<x_2 \le 300 }\)
\(\displaystyle{ 300<x_3 \le 450 }\)
i wzór funkcji w każdym przedziale jest inny. Chcę na jednym wykresie narysować przebieg funkcji dla parametrów max i parametrów min, w związku z tym mój kod wygląda następująco:

Kod: Zaznacz cały

         plot(x1_max, y1_max, 'r', x2_max, y2_max, 'r', x3_max, y3_max, 'r', 'LineWidth',3);
         hold on
         plot(x1_min, y1_min, 'b', x2_min, y2_min, 'b', x3_min, y3_min, 'b', 'LineWidth',3);
legend('wariant dla parametrow max', 'wariant dla parametrow min');


Niestety legenda w tej sytuacji traktuje każdy "igrek" jako osobną funkcję, czyli musiałabym albo każdy przebieg podpisywać potrójnie, albo nie wiem co. Czy istnieje jakiś sposób by legenda składała się z dwóch tylko elementów?

Mam nadzieję, że jasno opisałam swój problem, bardzo proszę o pomoc. Niestety nie jestem zbyt biegła w matlabie i długo już męczę się z tym kłopotem :/

Re: [Matlab] Modyfikacja legendy

: 15 lip 2020, o 20:12
autor: piotrjawor
Nie możesz po prostu scalić wektorów? Chodzi mi o coś takiego:

Kod: Zaznacz cały

plot([x1_max x2_max x3_max], [y1_max y2_max y3_max], 'r', 'LineWidth',3);
hold on;
plot([x1_min x2_min x3_min], [y1_min y2_min y3_min], 'b', 'LineWidth',3);
legend('wariant dla parametrow max', 'wariant dla parametrow min');
Ewentualnie, jeżeli są to wektory pionowe to trzeba je rozdzielić średnikami.

Re: [Matlab] Modyfikacja legendy

: 15 lip 2020, o 20:17
autor: olkaaa
Ojejku, jakie to proste :D BARDZO dziękuję!

Re: [Matlab] Modyfikacja legendy

: 15 lip 2020, o 20:17
autor: Janusz Tracz
Zobacz na poniższe sklejenie dziedziny:

Kod: Zaznacz cały

X1=[1:0.1:10];      %dziedzina pierwszego kawałka
Y1=X1.^2;           %wzór określający funkcję na pierwszym kawałku 
X2=[10.1:0.1:20];   %dziedzina kolejnego kawałka
Y2=-X2.^2+100;      %wzór na kolejnym kawałku 
X=[X1, X2];         %sklejenie dziedziny w całość  
Y=[Y1, Y2];         %sklejenie wartości funkcji w całość 
plot(X,Y)
legend('cała funkcja dana kwawałkami');
w analogiczny sposób możesz rozwiązać swój problem.