2014-10-09 3 views
-1

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

function [V] = adjacency(Z) 
n= size(Z,1); 
V = zeros(n); 
k=1:n; 
    for i = 1:n 
    for j = 1:n 
     if Z(i,j)<= max(Z(i,k),Z(j,k)) 
     V(i,j)=1; 
     V(j,i)=1; 
     else 
     V(i,j)=0; 
     V(j,i)=0; 
     end 
    end 
    end 
end 

Я не знаю, как сделать условие, что k должны отличаться друг от друга, чтобы i и отличается от j.

+2

Этот вопрос непонятен. Что вы подразумеваете под «Я не знаю, как сделать условие, что k должно отличаться от i и отличаться от j»? Не могли бы вы привести пример с некоторыми примерами ввода и некоторым образцом вывода? – Unapiedra

+0

условие дать 1 (скажем, что существует топологическая связь между i и j) состоит в том, что Z (i, j) <= max (Z (i, k), Z (j, k)) для всех k, I хотите исключить случай, когда k равно i или равно j – fatima

+0

Как насчет добавления примера для четырех четырех входных матриц и того, что вы хотите в качестве вывода? – Unapiedra

ответ

0
for k=1:n; 
    for i = 1:n 
    for j = 1:n 

     if(~(k==i || k==j)) 

      if Z(i,j)<= max(Z(i,k),Z(j,k)) 
      V(i,j)=1; 
      V(j,i)=1; 
      else 
      V(i,j)=0; 
      V(j,i)=0; 
      end 

     end 

    end 
    end 
end 
+0

большое спасибо – fatima

+1

Я получаю сообщение об ошибке: «Операнды к операторам || и && должны быть конвертируемым в логические скалярные значения ». Может быть, 'for' отсутствует перед' k = 1: n' и ';' удален? – Unapiedra

+0

@ Должен быть, должен быть, я редактировал его в – Dan