MatLab problema con condizione if

Messaggioda bloovix » 12/04/2018, 11:14

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:
Codice:
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]

Ultima modifica di bloovix il 12/04/2018, 16:57, modificato 1 volta in totale.
bloovix
Starting Member
Starting Member
 
Messaggio: 7 di 18
Iscritto il: 03/04/2018, 18:17

Re: MatLab problema con ciclo if

Messaggioda Raptorista » 12/04/2018, 15:56

Ciao, la tua funzione può essere una cosa del tipo [non ti fidare della sintassi che non scrivo in Matlab]
Codice:
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'if non si chiama ciclo ma condizione.
Un matematico ha scritto:... come mia nonna che vuole da anni il sistema per vincere al lotto e crede che io, in quanto matematico, sia fallito perché non glielo trovo


Immagine
Avatar utente
Raptorista
Moderatore
Moderatore
 
Messaggio: 4893 di 9616
Iscritto il: 28/09/2008, 19:58

Re: MatLab problema con ciclo if

Messaggioda bloovix » 12/04/2018, 16:58

Raptorista ha scritto:Ciao, la tua funzione può essere una cosa del tipo [non ti fidare della sintassi che non scrivo in Matlab]
Codice:
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'if 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.
bloovix
Starting Member
Starting Member
 
Messaggio: 9 di 18
Iscritto il: 03/04/2018, 18:17


Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite