【发布时间】:2016-02-22 01:49:01
【问题描述】:
我有一个数据文件,其中有 3 列,一列用于 x 轴上的位置,另一列是时间,第三列是温度。
因此,我在 x 和 time 中对温度进行了插值,以获得一个连续插值多项式句柄。
然后我在所有 x 和时间值上创建了一个网格,并获得了所有这些值的插值多项式值。
然后我在所有这些插值上绘制了等高线图。
但是我在这里看到了一些奇怪的行为。正如您在图中看到的那样,我的 x 值从 10 到大约 1300 不等。所以如果我保留这些 x 值,我会到处看到蓝色区域。但是当我将这个范围缩小到 200-1300 时,我仍然到处都能看到相同的蓝色区域。即使我将其更改为任何其他值,如图所示的整个蓝色区域仍然存在。
所以我的问题是,我希望在轮廓的顶部边界上方有一个白色区域,你可以看到它大约在 1200 左右,而在 x 轴上轮廓的尾端下方有一个类似的白色区域,大约在可能是200左右。
但我想将蓝色区域保留在轮廓停止的三角形区域中,因为在时间轴(即 x 轴)上指定的不同时间尺度上,x=400-1200 处有材料。
P.S.:为了清楚起见,y 轴是 x 值,x 轴是时间值,轮廓对应于 z 轴上的温度,通过在 matlab 中使用scatterInterpolant 函数对x 和时间进行插值获得。
这是我正在使用的脚本:
clear all; close all; clc;
load temperature.txt;
time = temperature(:,1); % This column contains the time
x = temperature(:,2); % This column contains the x values.
temperature_system = temperature(:,3); % This column contains the temperatures.
pos = temperature_system < prctile(temperature_system,41.967695);
time(pos) = [];
x(pos) = [];
temperature_system(pos) = [];
pos = (temperature_system > prctile(temperature_system,97));
time(pos) = [];
x(pos) = [];
temperature_system(pos) = [];
X1 = [time x];
F = scatteredInterpolant(X1,temperature_system);
x1 = linspace(min(x),max(x),100);
x2 = linspace(min(time),max(time),100);
[X,Y] = meshgrid(x2,x1);
Z = F(X,Y);
% plot3(x1,x2,F(x1,x2));
f1 = figure(1);
set(f1,'renderer','zbuffer');
%surf(X,Y,Z);
%ezcontourf(F)
[C,h] = contourf(X,Y,Z);
shading flat;
colormap(jet);
q = colorbar;
% cmap = colormap;
% cmap(1,:) = [1,1,1];
% colormap(cmap);
请注意图表开始的三角形区域,现在是白色,之前是蓝色,我想保留这个,但我该怎么做?
【问题讨论】: