最近、道路評価に ISO 分類を実装しようとしています。論文「路面の粗さを推定するための車両加速度測定の使用」を参照してください。しかし、ISO 分類グラフのプロットについていくつか質問がありました。コードは次のように示されます。
%% generate ISO Clasification Curve (m^2/(rad/m))
AngSpaFre = 10^(-3):0.01:10^2; % spatial frequency (rad/m)
ParamTable = [0 1*10^(-6) 2*(10^(-6)); % ISO classification parameters
2*(10^(-6)) 4*(10^(-6)) 8*(10^(-6)); % (lower bound, geometric average, upper bound)
8*(10^(-6)) 16*(10^(-6)) 32*(10^(-6));
32*(10^(-6)) 64*(10^(-6)) 128*(10^(-6));
128*(10^(-6)) 256*(10^(-6)) 512*(10^(-6));
512*(10^(-6)) 1024*(10^(-6)) 2048*(10^(-6));
2048*(10^(-6)) 4096*(10^(-6)) 8192*(10^(-6));
8192*(10^(-6)) 16384*(10^(-6)) 32768*(10^(-6))];
class_num = 8;
len = length(AngSpaFre);
iso_table = zeros(class_num, len);
for i = 1:class_num
geo_mean = ParamTable(i, 2);
geo_upbound = ParamTable(i, 3);
for j = 1:len
if(AngSpaFre(j) <= 1)
iso_table(i,j) = geo_mean*(AngSpaFre(j)^(-2));
else
iso_table(i,j) = geo_mean*(AngSpaFre(j)^(-1.5));
end
end
end
figure,
ht = loglog(AngSpaFre, iso_table(1,:), AngSpaFre, iso_table(2,:), AngSpaFre, iso_table(3,:), AngSpaFre, iso_table(4,:), AngSpaFre, iso_table(5,:), AngSpaFre, iso_table(6,:), AngSpaFre, iso_table(7,:), AngSpaFre, iso_table(8,:));
hY = get(gca,'ylim');
hold on;
loglog([1 1], hY);
xlabel('Spatial Frequency \Omega (rad/m)');
ylabel('PSD (m^2/(rad/m))');
title('ISO Classification (log-log scale)');
現在の結果は次の図のようになります。
次に、私の実装に2つの質問があり、問題を明確にするための解決策または簡単な例を誰かが教えてくれることを願っています。
Q1:分類曲線は、道路の品質レベルを認識する必要があるためです。そこで、下のグラフのように各線の下にレベルを示すラベルを追加したいと思います。これをmatlabでどのように実現できますか?
Q2:また、下の図のように、対数目盛のない「loglog」プロットの右側に別の y 軸を追加したいと思います。これを達成する方法は?公式ウェブサイトで多くの例を参照しましたが、ほとんどは 'plot'/'plotyy' の例に焦点を当てています。:(