Использование Surf и Peaks для неквадратных матриц - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь использовать сетку с пиком. Когда я использую квадратные матрицы, такие как:

[x,y] = meshgrid(1:10,1:10)
z = peaks(10)
surf(x,y,z)

Все отлично работает.

Однако, когда я использую неквадратные матрицы:

[x,y] = meshgrid(-30000:500:0,10:500); 
z = peaks(?)
surf(x,y,z)

Я получаю следующую ошибку:

Data dimensions must agree.

Есть идеи, как заставить это работать?

Спасибо.

1 Ответ

0 голосов
/ 23 марта 2019

При построении функции с использованием surf передаваемые переменные должны иметь одинаковый размер.Хотя вы меняете матрицы x и y на неквадратные матрицы, вы не создаете матрицу z соответствующего размера.Если вы посмотрите на документацию по peaks, это говорит вам , что эта функция может производить только квадратные выходные данные, что несколько усложняет ситуацию.Я бы посоветовал вам попытаться построить какую-то другую примерную функцию вместо этого.

Если вам абсолютно необходимо отобразить функцию peaks, вы можете использовать некоторую интерполяцию:

x = 1:10;
y = 1:10;
[x_mesh, y_mesh] = meshgrid(x,y);
z = peaks(10);

x2 = 1:0.1:10;
y2 = 1:0.5:10;
[x2_mesh, y2_mesh] = meshgrid(x2, y2);
z2 = interp2(x_mesh, y_mesh, z, x2_mesh, y2_mesh);

surf(x2_mesh, y2_mesh, z2);

Это даетмне следующий сюжет:

Peaks Plot

...