近似直線が端の方だけ​点線になります.該当​する近似曲線をすべて​点線にするためにはど​うすればよいですか?

조회 수: 13 (최근 30일)
KT
KT 2022년 7월 9일
답변: KT 2022년 7월 9일
異なるデータに対して近似直線のグラフを書きます.
データ2で点線を指定しているにもかかわらず,添付図のように中途半端な点線になります.
グラフを拡大しても該当する近似直線はなぜか点線になっていません.
ご教示のほどよろしくお願い申し上げます.
y1 = [59.1 60.8 59.2 72.5 64.2 63.4 58.5 60.6 78.4 44.6 58.7 41.9 39.9 38.9 61.7 39.7 29.9 28.4 29.3 27.5 25.3 -5.2 7.8 2.0 -4.8 -13.2 10.0 4.4 1.5]';
x1 = [3.0 2.6 3.9 3.0 3.5 3.2 3.4 3.9 3.6 3.3 3.3 3.3 2.9 3.3 3.6 3.2 2.7 3.0 3.5 3.7 3.7 2.8 2.9 3.4 3.8 3.4 2.9 3.2 3.2]';
y2 = [56.4 60.2 61.7 73.7 64.2 65.2 75.7 62.3 117.7 44.6 59.8 44.7 49.9 44.3 65.8 33.8 35.0 36.7 35.5 47.6 39.8 42.5 18.6 3.6 76.9 52.3 44.4 12.5 36.2]';
x2 = [3.5 3.4 3.3 3.1 3.6 4.0 3.8 2.9 3.2 2.9 3.4 3.0 3.2 3.2 3.0 3.3 3.2 3.3 2.9 3.5 3.2 3.3 3.5 3.3 3.1 3.2 2.8 2.6 3.2]';
%% データプロット1
X1 = [ones(length(x1),1) x1];
b1 = X1\y1;
yCalc1 = X1*b1;
plot(x1,y1,'ko',x1,yCalc1,'k-','MarkerSize',6)
hold on
%% データプロット2
X2 = [ones(length(x2),1) x2];
b2 = X2\y2;
yCalc2 = X2*b2;
plot(x2,y2,'k^',x2,yCalc2,'k--','MarkerSize',6)
legend('Data1','Linear fit','Data2','Linear fit')
hold off

채택된 답변

交感神経優位なあかべぇ
中途半端になる点線になるグラフのスクリプト部分を切り抜いて、下記のプロットを作成してみたところ、下記のプロットでも同様に、点線が中途半端になることを確認しました。
x2 = [3.5 3.4 3.3 3.1 3.6 4.0 3.8 2.9 3.2 2.9 3.4 3.0 3.2 3.2 3.0 3.3 3.2 3.3 2.9 3.5 3.2 3.3 3.5 3.3 3.1 3.2 2.8 2.6 3.2]';
X2 = [ones(length(x2),1) x2];
b2 = X2\y2;
yCalc2 = X2*b2;
plot(x2,yCalc2,'k--')
これは、x座標が2.9 ~ 3.7間で、なんどもプロット線が重なっている状態のため、点線が潰れてしまっています。
そのため、下記の例のように、x2を昇順に並び変えてあげることで、きれいな点線にすることができました。
[newX, sortIdx] = sort(x2);
newY = yCalc2(sortIdx);
plot(newX,newY,'k--');

추가 답변 (1개)

KT
KT 2022년 7월 9일
非常に基礎的にも関わらずご回答ありがとうございました.
出力された結果に対してプロット点が重なることは大いに考えられるため,線の種類を変更する場合は上記のsortを使用した方が良さそうですね.
今後ともよろしくお願い申し上げます.

카테고리

Help CenterFile Exchange에서 Just for fun에 대해 자세히 알아보기

태그

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!