3

好的,所以这开始变得非常令人沮丧。

我有以下代码:(scannedResponsethetaAxis这里给出)。

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);

所以我得到了两张图片。一个是用 pcolor 做的,一个是用 imagesc 做的。pcolor 图像是正确的,因为 y 轴是正确的,并且线条是它们应该在的位置。imagesc 是错误的,因为 y 轴是错误的,并且线条不在它们应该在的位置。

在此处输入图像描述

在此处输入图像描述

如您所见,imagesc 图像的线条与 pcolor 图像的线条不一致。我似乎无法让 imagesc y 轴与 pcolor y 轴一致,因此给了我一个类似的情节。我该怎么做呢?

PS我已经尝试过翻转图像的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 回答