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.