Matlab контурная схема интерполяции

Привет, если у меня есть такие данные, например,

x=[1:1:7];
y=[5:-1:1]';
z=[NaN  NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN
0.955113030084974   0.948571658876062   0.942624899410361   NaN NaN NaN NaN
0.937493758208870   0.928392864395896   0.920119550965773   0.910466888808695   0.901586502842837   0.892741292179595   NaN
0.879644551679863   0.862126561405869   0.846200299426160   0.827622958701087   0.810531605135333   0.793507569055583   0.775604152867929
];

Я хотел бы создать contourf (т.е. contourf(x,y,z);) участок, который избавляется от шагов, т.е. результатом должна быть плавная кривая на границе.

1 ответ

Вместо этого вы могли бы использовать imagesc, но причина таких жестких шагов в том, что у вас недостаточно точек данных. Чтобы изменить это, одним из вариантов является интерполяция большего количества точек данных между тем, что у вас есть.

x=[1:1:7];
y=[5:-1:1]';
z=[NaN  NaN NaN NaN NaN NaN NaN
    NaN NaN NaN NaN NaN NaN NaN
    0.955113030084974   0.948571658876062   0.942624899410361   NaN NaN NaN NaN
    0.937493758208870   0.928392864395896   0.920119550965773   0.910466888808695   0.901586502842837   0.892741292179595   NaN
    0.879644551679863   0.862126561405869   0.846200299426160   0.827622958701087   0.810531605135333   0.793507569055583   0.775604152867929];

xn = 1:.01:7;
yn = [5:-.01:1]';
zn = interp2(x,y,z,xn,yn);
imagesc(xn,yn,zn);
Другие вопросы по тегам