2015-02-19 2 views
5

У меня есть две матрицы, которые зависят от выбора там других вычислений. Например предположим:Matlab: если условие, когда двукратное число двух матриц не равно

A = 

8  9  3 
9  6  5 
2  1  9 

и

B = 

11  9 11  8  2 
    2  2  8  9  8 
11  5  1  9  1 
11 11 10  5  4 
    6  9 11  8  1 

Теперь, я бы выбрал одну из них в качестве нового matirix

C = A; 
C = B; 

Если я использую следующий if состояние я бы ошибку.

if C==A 
    %do some computation 
else if C == B 
    %do some other computation 
else 
    %print an error 

Поскольку размерность матриц не равна, то у меня есть ошибка. Не могли бы вы сообщить мне, как я мог бы правильно сформулировать это?

ответ

5

MATLAB предоставляет функцию для оценки равенства массива: isequal.

Так попробуйте:

if isequal(C,A) 
    %do some computation 
else if isequal(C,B) 
    %do some other computation 
else 
    %print an error 
+0

Примечание: 'isequal' выполняет те же проверки, что и код @ItamarKatz; но это встроенная функция –

+0

Большое спасибо. Это именно то, что я искал. –

+0

@Saber Хорошо, что вы приняли ответ. Однако многие люди не рассматривают вопросы с принятым ответом. Я думаю, было бы хорошо оставить его открытым, допустим, день, чтобы ответы могли получить больше голосов, а плакаты стали более ценными для их усилий. – kkuilla

3

Вы можете добавить еще одно условие для размера, обратите внимание, что если условие размер не выполняется, то второе условие не проверяется, так что вы не получите сообщение об ошибке:

if all(size(C)==size(A)) && all(C==A) 
    %do some computation 
elseif all(size(C)==size(B)) && all(C == B) 
    %do some other computation 
else 
    %print an error 
end 

Заметим также, что условие должно быть all(C==A).

+0

Спасибо за ваш ответ. –

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