[MATLAB] problemi esercizi facili

Messaggioda studente-studente » 24/05/2017, 09:43

Ciao, ho bisogno di una mano perché ci sono due cose che non ho chiare!

1) In un esempio del libro calcola la somma degli elementi positivi e minori di a della pare triangolare superiore di una matrice A di dimensioni n x n:

metto per completezza tutto il codice ma è solo la parte in grassetto che non capisco! Cosa fa? E cosa è ˜ o ˜=?

[n m]=size(A);
if n ˜= m
somma = [];
return
end

somma=0;
for i=1:n
j=i;
while j<=m
if A(i,j)>0 e A(i,j)<a
somma=somma+A(i,j);
end
j=j+1;
end
end


2) Non capisco perché MATLAB mi da alcuni errori..

x=[-5:9]
max=max(x)
min=min(x)
M=max(abs(x))
m=min(abs(x))
sum=sum(x)
S=sum(abs(x))

Non so perché mi da errore quando provo a fare max=max(x) o anche M=max(abs(x)).
L'errore non lo fa sempre infatti se faccio i comandi dal Command Window passo per passo, oppure usando un vettore y=abs(x) o anche lo stesso identico codice, non sempre mi da problemi. Dato che alcune volte mi da errore mentre altre no, suppongo che il problema non sia il comando in se. C'è qualche spiegazione?

Vi ringrazio in anticipo!
studente-studente
Junior Member
Junior Member
 
Messaggio: 159 di 472
Iscritto il: 13/07/2016, 21:43

Re: [MATLAB] problemi esercizi facili

Messaggioda insideworld » 24/05/2017, 14:16

https://it.mathworks.com/matlabcentral/answers/204-what-does-a-mean-in-the-following-code
la tilda ( ~ ) sembrerebbe un simbolo di negazione quindi ~= sarebbe "non uguale" ovvero "diverso".

riguardo la seconda parte, in genere è sconsigliabile usare parole chiavi o nomi di funzioni come nomi di variabile, non ricordo se questo vale per matlab, però puoi fare una prova usando mass o massimo al posto di max e così via.
Avatar utente
insideworld
Junior Member
Junior Member
 
Messaggio: 99 di 306
Iscritto il: 13/01/2017, 15:24

Re: [MATLAB] problemi esercizi facili

Messaggioda studente-studente » 26/05/2017, 15:19

Ho appena provato ma non cambia nulla, alcune volte va ed altre no. Nel libro non assegna a nessuna variabile, fa direttamente da Command Window.. ho provato anche io a fare solo da li ma uguale, alcune volte si ed altre no!
Penso che comunque sia giusto essendo nel libro, anche se molto strano
studente-studente
Junior Member
Junior Member
 
Messaggio: 162 di 472
Iscritto il: 13/07/2016, 21:43

Re: [MATLAB] problemi esercizi facili

Messaggioda apatriarca » 28/05/2017, 23:53

Qual'è l'errore? Non usare nomi di variabili uguali al nome di funzioni già definite. Anche fosse corretto rende il codice molto confuso.. Quale sarebbe insomma per te il significato della quarta riga?
apatriarca
Moderatore
Moderatore
 
Messaggio: 4644 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [MATLAB] problemi esercizi facili

Messaggioda insideworld » 29/05/2017, 09:59

aggiungo che se scrivi il codice e il testo dell'errore sicuramente possiamo aiutarti di più
potrebbe essere un banale errore di sintassi, ad esempio io una volta stavo impazzendo perchè non giravano dei programmini, poi ho visto che stavo scrivendo lenght invece di length, preso sbagliato da degli appunti del docente :roll: :oops:
tra l'altro aveva sbagliato solo li, però io l'ho memorizzato così e non ci ho fatto caso
Avatar utente
insideworld
Junior Member
Junior Member
 
Messaggio: 101 di 306
Iscritto il: 13/01/2017, 15:24

Re: [MATLAB] problemi esercizi facili

Messaggioda studente-studente » 30/05/2017, 12:48

Mi scuso, pensavo di aver scritto l'errore.
Riscrivo tutto:
(ho provato a cambiare i nomi)
x=[-5:9]
massimo=max(x)
minimo=min(x)
doppio=max(abs(x))
triplo=min(abs(x))
somma=sum(x)
S=sum(abs(x))

Facendo una riga per volta, con F9, noto che il problema si ha solo dove uso abs..
L'errore è: "Subscript indices must either be real positive integers or logicals."
Eppure non capisco, ho provato diverse volte:
Se faccio, subito dopo x, prima abs(x) e poi il max(abs(x)) funziona
Se faccio prima le altre, anche con run, e poi la quarta riga (o la quinta, o l'ultima) non va

apatriarca ha scritto:Quale sarebbe insomma per te il significato della quarta riga?

abs(x) mi restituisce il vettore x dopo aver fatto il valore assoluto a tutte le sue componenti e max(abs(x)) mi calcola il valore massimo di questo vettore
studente-studente
Junior Member
Junior Member
 
Messaggio: 165 di 472
Iscritto il: 13/07/2016, 21:43

Re: [MATLAB] problemi esercizi facili

Messaggioda apatriarca » 30/05/2017, 12:55

L'errore sembra suggerire che hai una matrice chiamata abs nel tuo workspace. Quello è tutto il tuo codice? Potresti cancellare tutte le variabili con clear all?
apatriarca
Moderatore
Moderatore
 
Messaggio: 4649 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [MATLAB] problemi esercizi facili

Messaggioda studente-studente » 30/05/2017, 13:03

Ho appena provato, ho fatto clear all e rifatto ogni comando passo passo con F9 e mi da sempre l'errore. La cosa che vorrei capire è: è Matlab che sta impazzendo oppure sto sbagliando qualcosa? perché dal libro e da quello che ho studiato dovrebbe essere giusto..
studente-studente
Junior Member
Junior Member
 
Messaggio: 167 di 472
Iscritto il: 13/07/2016, 21:43

Re: [MATLAB] problemi esercizi facili

Messaggioda apatriarca » 30/05/2017, 13:09

A me funziona. Potresti provare a stampare abs? Quel codice è quindi dentro uno script?
apatriarca
Moderatore
Moderatore
 
Messaggio: 4650 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [MATLAB] problemi esercizi facili

Messaggioda studente-studente » 30/05/2017, 19:41

Sisi, è dentro uno script. Allora ho riprovato tutto di nuovo, sia facendo prima la stampa di abs che non.. e ha funzionato tutto. Eppure ho fatto le stesse cose anche prima! Vabbè, l'importante è che sia giusto.. evidentemente matlab mi gioca brutti scherzi oppure tocco cose senza accorgermene, che posso dire

Comunque terrò presente di usare nomi diversi dalle funzioni
Vi ringrazio ad entrambi, siete stati gentilissimi!
studente-studente
Junior Member
Junior Member
 
Messaggio: 169 di 472
Iscritto il: 13/07/2016, 21:43


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite