MatLab problema con condizione if

bloovix
Buongiorno a tutti, ho un problema penso con il ciclo "if", in pratica data la matrice che ho chiamato As:

As = $((0,1,2,3,4,5,6,7,8,9,10),(5,0,0,0,0,0,0,0,0,0,0),(6,0,0,0,0,0,0,0,0,0,0),(7,0,0,0,0,0,0,0,0,0,0),(1,0,0,0,0,0,0,0,0,0,0),(2,0,0,0,0,0,0,0,0,0,0),(3,0,0,0,0,0,0,0,0,0,0))$

devo creare una funzione che mi scriva 1 quando i valori, ad esempio, 5 nella prima colonna e 5 nella prima riga sono uguali.
Non so se si è capito cosa voglio fare, ma vi lascio il risultato di quello che dovrebbe venire, qui sotto:

As = $((0,1,2,3,4,5,6,7,8,9,10),(5,0,0,0,0,1,0,0,0,0,0),(6,0,0,0,0,0,1,0,0,0,0),(7,0,0,0,0,0,0,1,0,0,0),(1,1,0,0,0,0,0,0,0,0,0),(2,0,1,0,0,0,0,0,0,0,0),(3,0,0,1,0,0,0,0,0,0,0))$

io la matrice As l'ho già creata non riesco a trovare il modo di ottenere il valore 1 quando il valore di 2 elementi sono uguali.
Grazie a chi potrà e vorrà aiutarmi.

Per completezza allego il codice che ho utilizzato finora:
clc
clear all

% Dati
A(:,:,1)=20.09; %cm^2
A(:,:,2)=25.34; %cm^2
E=21000; %kN/cm^2
I(:,:,1)=869.3; %cm^4
I(:,:,2)=606,2; %cm^4
n_e=2; %numero di elementi
H=300;
L(:,:,1)=200; 
L(:,:,2)=H*cotd(45);
gdlT=[0:10];
gdlE(:,1,1)=[5 6 7 1 2 3];
gdlE(:,1,2)=[1 2 4 8 9 10];
% coordinate nodali

ex(:,:,1)=[0 L(:,:,1)];
ex(:,:,2)=[L(:,:,1) L(:,:,1)+H];

ey(:,:,1)=[0 0];
ey(:,:,2)=[0 H];

% Vettore dei carichi

eq(:,:,1)=[0 0];
eq(:,:,2)=[0 10e2];

% Matrice dei gradi di libertà

Edof=[1 5 6 7 1 2 3;
    2 1 2 4 8 9 10];

% Calcolo delle matrici di rigidezza elemento per elemento

for i = 1:n_e
    Ke(:,:,i)=matrix_Ke(E,I(:,:,i),A(:,:,i),ex(:,:,i),ey(:,:,i));
end

% Matrice di Assemblaggio

As=[gdlE(:,1,1) zeros(length(gdlE(:,:,1)),length(gdlT)-1)]
As=[gdlT; As]


Risposte
Raptorista1
Ciao, la tua funzione può essere una cosa del tipo [non ti fidare della sintassi che non scrivo in Matlab]
for i = 2 : numRighe  % scorro tutte le righe tranne quella di bordo
    for j = 2 : numColonne % per ciascuna riga scorro la sua colonna tranne l'elemento di bordo
        if %primo elemento della riga% == %primo elemento della colonna%
            As[i,j] = 1
        end
    end
end


P.s. l'[inline]if[/inline] non si chiama ciclo ma condizione.

bloovix
"Raptorista":
Ciao, la tua funzione può essere una cosa del tipo [non ti fidare della sintassi che non scrivo in Matlab]
for i = 2 : numRighe  % scorro tutte le righe tranne quella di bordo
    for j = 2 : numColonne % per ciascuna riga scorro la sua colonna tranne l'elemento di bordo
        if %primo elemento della riga% == %primo elemento della colonna%
            As[i,j] = 1
        end
    end
end


P.s. l'[inline]if[/inline] non si chiama ciclo ma condizione.


Grazie per la risposta, ho corretto il titolo, cerco di fare quello che mi hai chiesto, vediamo come va.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.