Вы хотите использовать поэлементное умножение (.*
), потому что вы по-прежнему хотите обрабатывать a
и b
как скаляры (т.е. использовать каждый элемент по отдельности).
Вы можете сделать 3Doutput, где каждый 2D-срез соответствует вашему meshgrid
выводу, с одним срезом на компонент U
и V
.Поэтому в этом примере получаем матрицу 10*11*3
.
. Для этого просто reshape
векторов U
и V
будет иметь размер 1*1*3
U = reshape( [1,1,0], 1, 1, [] ); % Or equivalently U(1,1,:) = [1,1,0]
V = reshape( [1,0,1], 1, 1, [] ); % Or equivalently U(1,1,:) = [1,0,1]
Затем выполните поэлементное умножение
s = a.*U + b.*V;
Примечание: перед MATLAB R2016b (когда было введено неявное расширение) вам нужно будет использовать bsxfun
, чтобы получить эквивалент:
s = bsxfun( @times, a, U ) + bsxfun( @times, b, V );
Затем вы можете построить i
-й элемент S
, изменяющийся с A
и B
, построив s(:,:,i)
.