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

5 views (last 30 days)
KT
KT on 9 Jul 2022
Answered: KT on 9 Jul 2022
異なるデータに対して近似直線のグラフを書きます.
データ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

Accepted Answer

交感神経優位なあかべぇ
中途半端になる点線になるグラフのスクリプト部分を切り抜いて、下記のプロットを作成してみたところ、下記のプロットでも同様に、点線が中途半端になることを確認しました。
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--');

More Answers (1)

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

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!