Это в основном то, для чего MESHGRID .Он копирует векторы значений в сетки, и затем к этим точкам сетки можно применить функцию.Обычно вы можете воспользоваться матричными и поэлементными операциями с массивами , чтобы избежать использования цикла for для выполнения определенных вычислений в результирующих сетках.Вот пример:
>> X = 1:4; %# A sample X vector
>> Y = 1:5; %# A sample Y vector
>> [xMat,yMat] = meshgrid(X,Y); %# Create 2-D meshes from the vectors X and Y
>> fun = @(x,y) x.^y; %# A sample function, which raises each element of x to
%# the corresponding element of y power
>> A = fun(xMat,yMat) %# Apply the function to compute A
A =
1 2 3 4
1 4 9 16
1 8 27 64
1 16 81 256
1 32 243 1024
Обратите внимание, что первый вход для MESHGRID (т. Е. X
) обрабатывается как проходящий вдоль столбцов, а второй вход (т. Е. Y
)рассматривается как бег по рядам.Это обычно желательно, если X
и Y
представляют декартовы координаты и матрица A
будет построена в виде трехмерной поверхности или сетки.Однако вы также можете использовать функцию NDGRID , если хотите, чтобы это поведение было «перевернуто».Вот тот же пример с NDGRID :
>> [xMat,yMat] = ndgrid(X,Y);
>> A = fun(xMat,yMat)
A =
1 1 1 1 1
2 4 8 16 32
3 9 27 81 243
4 16 64 256 1024
Обратите внимание, что A
теперь является матрицей 4 на 5 вместо матрицы 5 на 4.