2012-05-07 2 views
0

У меня есть несколько массивов:Матрицы пар из двух массивов в MATLAB

x = [0:pi/16:2*pi] 
y = [0:pi/16:2*pi] 

И я хочу, чтобы сделать матрицу х следующим образом:

xY = [(0,0)  (0,pi/16)  ...  (0,2pi); 
     (pi/16,0) (pi/16,pi/16) ...  (pi/16,2pi); 
      :   :      : 
     (2pi,0) (2pi,pi/16) ...  (2pi,2pi)] 

Я пробовал много вещей, например:

for i=1:length(x) 
    for j=1:length(y) 
     xy{i,j} = [{x(i),y(j)}]; 
    end 
end 

, но я столкнулся с множеством ошибок.

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

Я думаю, что я должен упомянуть, что я пытаюсь создать многослойный персептрон в том, что получит обученный с этими матрицами и эта формулой:

fxy = cos(x)-3*sin(y); 

Спасибо заранее!

ответ

1

Это именно то, для чего предназначен meshgrid.

+0

Оказывается, спасибо! – Kirby

1

Самый простой способ заключается в это, чтобы создать матрицу размером length(x) матрицу с размерностью length(y)2: матрицу с размерностью

A = zeros(length(x), length(y), 2); 
for i = 1 : length(x); for j = 1 : length(y); A(i, j, :) = [x(i), y(j)]; end; end; 

В вашем случае матрица A будет иметь размер 33x33x2. Для того, чтобы получить пару с помощью индексов i, j используйте следующий код:

squeeze(A(i, j, :)) 

Или вы можете настроить свой код для работы с такой 3-мерной матрицей.

Смежные вопросы