Если у вас есть два вектора r
и theta
, дающие полярные координаты, или две матрицы rGrid
и thetaGrid
, дающие полярные координаты для каждого элемента матрицы данных, то такой код будет работать :
r=linspace(1,20,20);
theta=linspace(0,2*pi,20);
data = r'.*sin(2.*theta); % INSERT DATA HERE
[thetaGrid,rGrid]=meshgrid(theta,r); % Create coordinate grid if needed
[xGrid,yGrid]=pol2cart(thetaGrid,rGrid);
surf(xGrid,yGrid,data); % Plot data
view(2);
Просто имейте в виду, что строки матрицы данных должны соответствовать разным радиусам, а столбцы должны соответствовать разным значениям тета. Если он перевернут, то транспонируйте матрицу перед построением:
data = data';
Кроме того, если данные не переходят от 0 до 2 * пи радиан, повторите первое значение теты как последнее значение, и повторите первый столбец матрицы данных как новый последний столбец:
theta(end+1)=theta(1);
data=cat(2,data,data(:,1));
Существует также функция 3D Polar Plot при обмене файлами MATLAB, но у меня нет опыта ее использования: Трехмерный полярный график