Для обратного цикла матрица

Я пытаюсь инвертировать матрицу в Matlab, но я борюсь.

По сути, это матрица 3x3, однако каждая позиция матрицы имеет 801 точку.

Я предполагаю, что мне нужно каким-то образом использовать цикл for, чтобы получить перевернутую матрицу 3x3, каждая из которых содержит 801 точку.

inv (A11 (1) A12 (1) A13 (1); A21 (1) A22 (1) A23 (1); A31 (1) A32 (1) A33 (1))

Например, это обратное даст мне первую из 801 точки матрицы


person R. Cooper    schedule 27.04.2016    source источник
comment
Итак, A11 и т. Д. - это векторы с 801 значением, и вы собираете 801 матрицу 3 × 3 для инверсии?   -  person John Alexiou    schedule 27.04.2016


Ответы (2)


Попробуй это:

m = cell(801,1);
for i=1:801
  m{i} = inv([A11(i),A12(i),A13(i); A21(i),A22(i),A23(i); A31(i),A32(i),A33(i)]);
end

Теперь m - это массив ячеек, и вы получаете доступ к результату i-th с помощью m{i}.

person John Alexiou    schedule 27.04.2016

Я думаю, вы не ищете инверсию матрицы, поскольку это какая-то математическая вещь, но вы пытаетесь перевернуть ее порядок. Если вы хотите перевернуть матрицу 3x3, попробуйте

A=fliplr(A) %for left-right flip
A=flipud(A) %for up down flip

если вы хотите, чтобы матрица A оставалась прежней, попробуйте инвертировать каждый содержащий вектор попробуйте

cellfun(@(x) flipud(x),A,'Uniformoutput',false) %for up down flip in every cell
person Finn    schedule 27.04.2016