multiple plots from array without loop

9 ビュー (過去 30 日間)
Tommy B
Tommy B 2016 年 12 月 2 日
回答済み: Tommy B 2016 年 12 月 2 日
Hi all
I have an array (X) holding lets say 20 cycles of data. I would like to plot the entire 20 cycles as a dashed line plot, and then markup (with a solid line) specific segments of the graph, the start and end indexes are in two different vectors S1 and S2. Would it be possible to do something like this:
plot(X,'k--');
hold on;
plot(X([S1:S2]),'r');
instead of using a loop as:
plot(X,'k--');
for i=1:length(S1)
plot(X(S1(i):S2(i),r,)
end
The only reason is I would like to avoid loops in my code, as I am plotting several graph segments within my code, and then having 30 for loops does not look good :)
Best, Tommy
  2 件のコメント
KSSV
KSSV 2016 年 12 月 2 日
This will work:
plot(X,'k--');
hold on;
plot(X([S1:S2]),'r');
You can try on your own...why doubt?
Tommy B
Tommy B 2016 年 12 月 2 日
編集済み: Tommy B 2016 年 12 月 2 日
Hi Well because I did try, and it did not work :/
X =[1 2 3 4 5 6 7 8 9 10];
S1=[1 4 9];
S2=[2 5 10];
plot(X,'k--');
hold on;
plot(X([S1:S2]),'r');
I want this to mark the section X= 1-2 & 4-5 & 9-10 with a red line, the rest should be dashed. With the above code it only marks the first segment in red.
Best, Tommy

サインインしてコメントする。

採用された回答

KSSV
KSSV 2016 年 12 月 2 日
編集済み: KSSV 2016 年 12 月 2 日
I understand now...You may follow some thing like this:
X =[1 2 3 4 5 6 7 8 9 10];
S1=[1 4 9];
S2=[2 5 10];
plot(X,'k--');
hold on;
Y = NaN(size(X)) ;
Y([S1 S2]) = X([S1 S2]) ;
plot(Y,'r');
Introduce NaN's at the place you want to skip...plot will not show NaN's.

その他の回答 (1 件)

Tommy B
Tommy B 2016 年 12 月 2 日
Yes, perfect! Thanks a lot!
Have a nice weekend.
Best, Tommy

カテゴリ

Help Center および File ExchangeMathematics についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by