2014-09-04 5 views
0

Hi Если у меня есть данные, подобные этому, например,Matlab contourf plot интерполяция

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);) сюжет, который избавляется от шагов, то есть в результате должна быть гладкой кривой на границе.

+0

Привет, когда я рисую данные, он выглядит как функция лестницы. Мне бы хотелось, чтобы это была кривая. –

+0

Как я могу пройти мимо фигуры здесь ... Я новый **** :) –

+0

Не могли бы вы добавить код, который вы использовали для построения данных? – Trogdor

ответ

0

Вместо этого вы можете использовать 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);