MatLab problema con condizione if
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:
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
Ciao, la tua funzione può essere una cosa del tipo [non ti fidare della sintassi che non scrivo in Matlab]
P.s. l'[inline]if[/inline] non si chiama ciclo ma condizione.
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.
"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.