1. ホーム
  2. matlab

[解決済み] MATLABで軸の制限をグローバルに設定し、プロットされたデータの最小値と最大値にする方法は?

2022-02-05 14:36:40

質問

MATLAbでいくつかの図形をプロットしようとしています。サブプロット機能を使って複数のグラフを横に並べると、軸の限界が変わってしまい、xとyの最小値と最大値にならず、常に余分な余白ができます。

X軸とY軸の値をゴロ合わせで最小と最大に設定する方法を探しています。私の図には約50のプロットがあり、それぞれのプロットでxとyは異なる名前になっています...。毎回MATLABにxとyをそれらの最小値と最大値に制限するように頼んでいると、本当に時間がかかり、行数も増えてしまいます...。

では、これを定義するグローバルな方法はあるのでしょうか?

また、同様の 質問 しかし、それは私の質問に答えていないようです。

これは小さなダミーコードで、私のグラフにある同様の問題を示しています...

x = linspace(0,2*pi,20); 
y = sin(x); 
figure(1) 
subplot(4,3,1)
plot(x,y)
title('Original')
fft_y = fft(y); 
subplot(4,3,2)
plot(abs(fft_y))
title('Spectrum')
subplot(4,3,3)
plot(angle(fft_y)) 
title('Phase')

解決方法は?

まず、X軸とY軸のリミットを最小と最大に設定するには、軸に自動的に選択させたいリミットにinfまたは-infを使用します。例えば、axis([-inf 10 0 inf])とすると、X軸の最小リミットとY軸の最大リミットを適切に選択させることができます。

次に、X軸とY軸の制限をグローバルに設定するには、各サブプロットに対して ax_n = subplot(4,3,n) とします。そして、最後に axis([ax_1, ax_2, ax_3], [-inf inf -inf inf]) を使用して、すべてのサブプロットを同時に設定します。

x = linspace(0,2*pi,20); 
y = sin(x); 
figure(1) 
ax_1 = subplot(4,3,1)
plot(x,y)
title('Original')
fft_y = fft(y); 
ax_2 = subplot(4,3,2)
plot(abs(fft_y))
title('Spectrum')
ax_3 = subplot(4,3,3)
plot(angle(fft_y))
title('Phase')

axis([ax_1, ax_2, ax_3], [-inf inf -inf inf]);

出力します。