Контур сетки и назначение стрелок величины в Matlab

это сетка

Я хочу присвоить вектор контурному графику, чтобы показать направление и силу ветра. Для этого я использую contourf(A) и quiver(x,y), где A — матрица 151x401, а x,y — матрицы одинакового размера (151x401) с величиной и направлением соответственно.

Когда я использую большие карты, я получаю положение стрелок, но они расположены слишком плотно, и из-за этого график выглядит плохо. после колчана

На финальном графике стрелки как хотелось бы, но их много и они слишком близко, хотелось бы чтобы они были более редкими и распределялись с большим зазором между ними, чтобы иметь возможность увеличивать их длину и в то же время иметь видимыми компоненты контурной карты.

Может ли кто-нибудь помочь, любые указатели будут полезны


person George    schedule 23.05.2014    source источник
comment
Я прав, что рассматриваемые стрелки сохраняются в матрицах x и y? Если да, то пытались ли вы строить не все матрицы, а подструктуры? например x(1:50:60000). Если я не ошибаюсь, это должно показывать каждый 50-й элемент вашей x-матрицы, пока вы не достигнете 60000 элементов (что примерно равно 151:401): D   -  person The Minion    schedule 23.05.2014
comment
@The Minion, матрицы x и y представляют значения скорости и направления ветра, возможно ли уточнить, что вы подразумеваете под построением их подструктур?   -  person George    schedule 23.05.2014
comment
Не могли бы вы опубликовать код, как вы используете колчан? Потому что, если я правильно понимаю, вы используете его для построения векторов с компонентами (x, y). Где вы их рисуете? по 1 оси? если это так, вы сможете изменить quiver(x,y) на quiver(x(1:step:lastelement),y(1:step:lastelement). Здесь шаг — это количество стрелок, которые вы хотите пропустить, а последний элемент — координата последнего элемента, поэтому размер (1) * размер (2) = 151 * 401 = 60551.   -  person The Minion    schedule 23.05.2014
comment
@TheMinion, я использую контур (A), держи, колчан (x, y), я прикрепил полученные изображения, если это поможет.   -  person George    schedule 23.05.2014
comment
Вы пытались изменить x, y, как я сказал? Если да, то каков был результат? Я сам не использовал колчан, поэтому мой комментарий был просто предположением, которое могло сработать. Когда я прочитал, что вы соединяете их в свой contourf, я подумал, что размеры не подходят. Другой возможностью было бы создать массив/матрицу, которая имеет тот же размер, что и x, y, и у которой есть те, где вы хотите показать стрелку, и 0 в противном случае. ТОГДА вы можете выполнить поэлементное умножение, результат которого вы можете использовать в своем quiver   -  person The Minion    schedule 23.05.2014
comment
@TheMinion Я пробовал, к сожалению, не работает, x, y соответствуют каждой точке части контура, поэтому они дают важную информацию о фигуре. Я хотел бы создать сетку с некоторыми встроенными стрелками-направлениями на рисунке.   -  person George    schedule 23.05.2014


Ответы (1)


я знаю, что прошло много времени с тех пор, как вопрос был задан, но я думаю, что нашел способ заставить его работать. Прилагаю код на случай, если кто-то столкнется с такими же проблемами

[nx,ny]= size(A) % A is the matrix used as base
xx=1:1:ny; % set the x-axis to be equal to the y
yy=1:1:nx; % set the y-axis to be equal to the x
contourf(xx,yy,A)
hold on, delta = 8; %delta is the distance between arrows)
quiver(xx(1:delta:end),yy(1:delta:end),B(1:delta:end,1:delta:end),C(1:delta:end,1:delta:end),1) % the 1 at the end is the size of the arrows
set(gca,'fontsize',12);, hold off

A, B, C - соответствующие матрицы, которые хотят использовать

person George    schedule 19.08.2014