Я хочу визуализировать 4 вектора рассеянных данных с поверхностным графиком. 3 векторами должны быть координаты. Кроме того, 4-й вектор должен представлять собой цвет поверхности. Мой первый подход для построения этих данных (хк, ук, гк, ск), используяУлучшение визуализации поверхности точек рассеяния
scatHand = scatter3(xk,yk,zk,'*');
set(scatHand, 'CData', ck);
caxis([min(ck), max(ck)])
В результате я получаю разбросанные точки разного цвета. Поскольку эти точки лежат на поверхности полушария, можно получить цветные грани вместо точек. Я заменить разбросанные точки на поверхность с помощью GridData к первому построить аппроксимацию
xk2=sort(unique(xk));
yk2=sort(unique(yk));
[xxk, yyk]=meshgrid(xk2, yk2);
zzk=griddata(xk,yk,zk,xxk,yyk,'cubic');
cck=griddata(xk,yk,clr,xxk,yyk,'cubic');
surf(xxk,yyk,zzk,cck);
shading flat;
Это уже почти то, что я хочу, за исключением того, что в нижней части полушария неровная. Конечно, если я увеличиваю номера точек интерполяции, он станет лучше, но обработка графика будет медленной. Поэтому я задаюсь вопросом, есть ли простой способ заставить функцию интерполяции сделать четкий разрыв. Кроме того, кажется, что оборванная граница связана с тем, что значение zzk получает «NaN» за пределами круга, которое полушарие разделяет с плоскостью z = 0.
Красные точки в верхней части - это первые несколько записей исходных рассеянных данных.