2012-03-20 5 views
0

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

Ex: пусть говорят, что если мы имеем матрицу А, где

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

Благодарности

ответ

0

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

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) 
+0

Спасибо вам Oli. Оценил вашу обеспокоенность. – user1281585

7

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

>> 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

Лучший ответ +1 – Oli

+0

Я никогда не думал об использовании 'kron()' like this - хотя я часто использовал его собственный код. Очень изобретательно! возьмите 10 очков выживания! – Max

+0

Спасибо за мельницу. Это действительно помогает. – user1281585

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