[MATLAB] grafico in coordinate cartesiane
16 messaggi
• Pagina 2 di 2 • 1, 2
0
voti
ok, sono riuscito in modo un po' barbaro a memorizzare tutte le coppie di punti che devo congiungere nel grafico scatter. Come posso procedere all'unione di tali punti?
2
voti
Non te la prendere,
edomar, ma devo dirti una cosa: non sei assolutamente in grado di scrivere del codice. Hai scritto una roba incomprensibile e non l'hai neanche commentata, dato nomi idioti alle variabili, formattato le espressioni in modo orrendo, definito strutture dati inutili, organizzato malissimo tutti i dati che hai usato (una cosa tra tutte: UNA MATRICE NON É UN CONTENITORE UNIVERSALE DOVE METTI TUTTO CIÒ CHE TI PASSA PER LA TESTA)... non è così che si fa.
Ho riscritto per intero il codice - o almeno, ho cercato di interpretare quella roba assurda che hai scritto e trarne indicazioni per scrivere qualcosa di sensato - e l'ho commentato per te: ricopialo su Matlab e leggilo attentamente.
Ho riscritto per intero il codice - o almeno, ho cercato di interpretare quella roba assurda che hai scritto e trarne indicazioni per scrivere qualcosa di sensato - e l'ho commentato per te: ricopialo su Matlab e leggilo attentamente.
- Codice: Seleziona tutto
clear all
clc
A = [0,1];
B = [-1,0,1];
C = [0,1];
gamma = 1;
matr_col = 0;
%Creazione dei vettori:
%anzitutto, creiamo la matrice contenente i vettori composti a partire da
%A, B e C, e poi creiamo componente per componente la matrice composta dai
%vettori traformati.
for i = 1 : 2
for j = 1 : 3
for k = 1 : 2
matr_col = matr_col + 1;
M_vet(:, matr_col)=[A(i); B(j); C(k)];
M_vet_trasf(1, matr_col)=1/(3*(1 + gamma)) * (3 + gamma + 2 * gamma * M_vet(1, matr_col) - M_vet(2, matr_col) - gamma * M_vet(3, matr_col));
M_vet_trasf(2, matr_col)=1/(3 * (1 + gamma)) * (gamma - gamma * M_vet(1, matr_col) + 2 * M_vet(2, matr_col) - gamma * M_vet(3, matr_col));
M_vet_trasf(3, matr_col)=1/(3 * (1 + gamma)) * (-3 - 2 * gamma - gamma * M_vet(1, matr_col) - M_vet(2, matr_col) + 2 * gamma * M_vet(3, matr_col));
end
end
end
%Calcolo dei punti da rappresentare
M_points = 2/3 * [1, -1/2, -1/2; 0, sqrt(3)/2, -sqrt(3)/2] * M_vet_trasf;
%Calcolo dei punti da unire e costruzione dei grafici:
%per ogni punto di partenza, tracciamo l'intero grafico scatter e coloriamo
%quel punto di verde; dopo, procediamo alla ricerca dei punti da
%connettergli, e ogni volta che ne troviamo uno tracciamo il segmento.
for i = 1 : 12
figure();
scatter(M_points(1, :),M_points(2, :));
hold on;
plot(M_points(1, i), M_points(2, i), 'og');
hold on;
for j = (i + 1) : 12
if (M_vet(1, i) == M_vet(1, j) && M_vet(2, i) == M_vet(2, j) && abs(M_vet(3, i) - M_vet(3, j)) == 1)
plot([M_points(1, i), M_points(1, j)], [M_points(2, i), M_points(2, j)], '-b');
hold on;
elseif (M_vet(2, i) == M_vet(2, j) && M_vet(3, i) == M_vet(3, j) && abs(M_vet(1, i) - M_vet(1, j)) == 1)
plot([M_points(1, i), M_points(1, j)], [M_points(2, i), M_points(2, j)], '-b');
hold on;
elseif (M_vet(1, i) == M_vet(1, j) && M_vet(3, i) == M_vet(3, j) && abs(M_vet(2, i) - M_vet(2, j)) == 1)
plot([M_points(1, i), M_points(1, j)], [M_points(2, i), M_points(2, j)], '-b');
hold on;
end;
end;
end;
-

rugweri
5.948 2 8 13 - CRU - Account cancellato su Richiesta utente
- Messaggi: 1366
- Iscritto il: 25 nov 2016, 18:46
1
voti
Ciao, grazie della puntualità della risposta. Ho letto e capito il tuo script che è decisamente più ordinato del mio.
Hai detto bene, non sono un programmatore, sto imparando ma faccio tutto da autodidatta.
Hai detto bene, non sono un programmatore, sto imparando ma faccio tutto da autodidatta.
2
voti
edomar ha scritto:Hai detto bene, non sono un programmatore, sto imparando ma faccio tutto da autodidatta.
Capisco... e onestamente, in parte questa tua risposta mi conforta: rendersi conto degli errori è il primo passo per migliorare
A questo punto, mi permetto di consigliarti alcuni accorgimenti che potrebbero rendere migliore il codice che scriverai d'ora in poi:
1 - Commenta tutto, ma proprio tutto: prima di ogni blocco di codice, spiega cosa vuoi fare; prima di istruzioni particolarmente oscure, appunta il loro scopo; all'inizio di ciascun file sorgente, inserisci una breve spiegazione del suo contenuto. Si perde un sacco di tempo, ma almeno nelle prime fasi dell'apprendimento darsi in qualche modo un ordine ed una sistematicità aiuta... si può fare anche in altri modi (io, per esempio, appuntavo e tuttora appunto i miei algoritmi su carta, così durante la scrittura del codice avevo un riferimento costante), ma i commenti vanno messi comunque, quindi tanto vale scriverne un po' di più
2 - Progetta ciò che ti serve: la creazione di un programma o di uno script non si limita alla redazione del suo codice, che anzi è solo l'ultimo, quasi meccanico passo: occorre sempre progettare i propri elaborati con cura, scegliendo anzitutto le strutture dati da usare (e il ruolo di ciascuna di esse!!!) e poi elaborando (o ri-elaborando: non ha senso inventare la ruota ogni volta, e comunque esistono già tantissimi algoritmi di comprovata efficacia in quasi ogni ambito della computazione) gli algoritmi da utilizzare.
3 - Dai nomi significativi alle strutture dati che usi: essi ti aiutano a rendere leggibile e facilmente modificabile il codice. Addirittura, potresti dare nomi significativi anche agli indici che usi solo per lo scorrimento di vettori e matrici... molte volte non viene fatto, ma in certi casi potrebbe aiutare a capire meglio il codice.
4 - È fondamentale formattare il codice in modo comprensibile: le spaziature, l'indentazione, la lunghezza delle righe sono tutti elementi che possono fare la differenza, soprattutto quando il codice comprende espressioni non banali.
5 - Impara il linguaggio prima di usarlo: Matlab è molto potente nel suo ambito, e permette di fare tante cose interessanti... ma occorre - come con qualsiasi linguaggio - capirne la logica, prima di poterlo usare, così da poter scrivere del codice scorrevole, corretto e possibilmente efficiente.
-

rugweri
5.948 2 8 13 - CRU - Account cancellato su Richiesta utente
- Messaggi: 1366
- Iscritto il: 25 nov 2016, 18:46
1
voti
Si può sempre imparare qualcosa, o comunque sfruttare ciò che capita a fini culturali: io, per esempio, ho approfittato delle tue richieste per ripassare un po' le basi di Matlab, che per il momento non ho occasione di utilizzare spesso
A proposito: visto che stai studiando Matlab, ritengo tu possa trovare estremamente interessante l'estesissima documentazione ufficiale della Mathworks
A proposito: visto che stai studiando Matlab, ritengo tu possa trovare estremamente interessante l'estesissima documentazione ufficiale della Mathworks
-

rugweri
5.948 2 8 13 - CRU - Account cancellato su Richiesta utente
- Messaggi: 1366
- Iscritto il: 25 nov 2016, 18:46
16 messaggi
• Pagina 2 di 2 • 1, 2
Torna a Programmi applicativi: simulatori, CAD ed altro
Chi c’è in linea
Visitano il forum: Nessuno e 2 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
