3

わかりました、これは非常にイライラし始めています。

私は次のコードを持っています:(scannedResponse、ここに与えられたthetaAxis)。

clear all
load scannedResponse
load thetaAxis
figure(1); clf(1);
pcolor(1:size(scannedResponse,2), thetaAxis, scannedResponse); shading interp; 
figure(2); clf(2);
imagesc(1:s.N.Lsnaps, (thetaAxis),  scannedResponse);

だから私は2つの画像を取得します。1 つは pcolor で作成され、もう 1 つは imagesc で作成されます。y 軸が正しく、線が本来あるべき場所にあるため、pcolor イメージは正しいです。y軸が間違っていて、線が本来あるべき場所にないため、imagescは間違っています。

ここに画像の説明を入力

ここに画像の説明を入力

ご覧のとおり、 imagesc イメージの線は pcolor イメージの線と一致しません。imagesc の y 軸を pcolor の y 軸と一致させることができないため、同様のプロットが得られます。どうすればそれを行うことができますか?

PS私はすでにimagescのy軸を反転させたり、set(gca,'Ydir', 'normal')コマンドを使用したりするなど、すべての範囲を試しましたが、役に立ちませんでした。

ありがとう。

4

1 に答える 1

9

問題は、 thetaAxis に等間隔でない値が含まれていることです。pcolorそれに対処できます、imagescできません。解決策は、データを補間して等間隔のグリッドに配置することです。

% determine interpolation grid: from min to max in equal steps
intpoints = linspace(min(thetaAxis), max(thetaAxis), numel(thetaAxis));
% interpolate the data to fit the new "axis"
int = interp1(thetaAxis', scannedResponse, intpoints);
% plot the interpolated data  using the new "axis"
imagesc(1:size(scannedResponse,2), intpoints, int)
% revert the direction of the y axis
axis xy

pcolor が実行しているように見える暗黙の平滑化を除いて、このプロットは を使用したものと同じに見えますpcolor(1:size(scannedResponse,2), thetaAxis, scannedResponse); shading interp

于 2013-09-29T22:26:33.780 に答える