Как заменить элементы матрицы другой матрицей в MATLAB? - PullRequest
0 голосов
/ 20 марта 2012

Как заменить элементы матрицы другой матрицей в MATLAB?

Пример: допустим, у нас есть матрица А, где

A=[1 0 0; 0 1 0; 1 0 1]

Я хочу заменить все на

J=[1 0 0; 0 1 0; 0 0 1]

и нули

K=[0 0 0; 0 0 0; 0 0 0]

Так что я могу получить матрицу 9x9. Так как мы будем кодировать это в MATLAB

Спасибо

Ответы [ 2 ]

7 голосов
/ 20 марта 2012

Похоже, вы захотите взглянуть на тензорный продукт kronecker .Это не общий случай, но идея должна работать для того, что вы хотите

>> kron(A==1,J)+kron(A==0,K)

ans =

     1     0     0     0     0     0     0     0     0
     0     1     0     0     0     0     0     0     0
     0     0     1     0     0     0     0     0     0
     0     0     0     1     0     0     0     0     0
     0     0     0     0     1     0     0     0     0
     0     0     0     0     0     1     0     0     0
     1     0     0     0     0     0     1     0     0
     0     1     0     0     0     0     0     1     0
     0     0     1     0     0     0     0     0     1

, что, например, упростит команду до более простой:

>> kron(A,J)

ans =

     1     0     0     0     0     0     0     0     0
     0     1     0     0     0     0     0     0     0
     0     0     1     0     0     0     0     0     0
     0     0     0     1     0     0     0     0     0
     0     0     0     0     1     0     0     0     0
     0     0     0     0     0     1     0     0     0
     1     0     0     0     0     0     1     0     0
     0     1     0     0     0     0     0     1     0
     0     0     1     0     0     0     0     0     1
0 голосов
/ 20 марта 2012

Вы можете сделать:

A2=imresize(A,size(A).*size(J),'nearest');
J2=repmat(J,size(A));
K2=repmat(K,size(A));
A2(A2==1)=J2(A2==1);
A2(A2==0)=K2(A2==0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...