PDA

View Full Version : [Matlab] errore e non capisco


lucciola
04-12-2007, 23:20
salve a tutti.devo fare dei calcoli per finire la tesi d'ingegneria e uso matlab:
vi prego,guardate l'ora e datemi una mano il prima possibile a dirmi dove sbaglio:
i miei dati:
ycrit=2.8e-4
b=[-2.17e-7;-.1695;.5789;.001]
vp=3:0.1:5.9
questa è la funzione:
dp=[((ycrit-b(4))/(b(1)*vp.^(b(3))))^(1/(b(2)))]
mi da il seguente errore:
??? Error using ==> mrdivide
Matrix dimensions must agree
ho guardato su google e qui anche nella funzione cerca..ma cosa ho sbagliato?cè qualcuno che mi aiuta?vi prego..

Xoom83
04-12-2007, 23:48
salve a tutti.devo fare dei calcoli per finire la tesi d'ingegneria e uso matlab:
vi prego,guardate l'ora e datemi una mano il prima possibile a dirmi dove sbaglio:
i miei dati:
ycrit=2.8e-4
b=[-2.17e-7;-.1695;.5789;.001]
vp=3:0.1:5.9
questa è la funzione:
dp=[((ycrit-b(4))/(b(1)*vp.^(b(3))))^(1/(b(2)))]
mi da il seguente errore:
??? Error using ==> mrdivide
Matrix dimensions must agree
ho guardato su google e qui anche nella funzione cerca..ma cosa ho sbagliato?cè qualcuno che mi aiuta?vi prego..

credo tu stia eseguendo un'operazione che richieda matrici di uguali dimensioni

Francoo
07-12-2007, 11:05
Stai dividendo uno scalare, definito da (ycrit-b(4)) per un vettore definito da (b(1)*vp.^(b(3))).

Saluti

mparlam
11-01-2008, 10:45
Allora, direi che il problema principale è che, usando troppe parentesi non necessarie, non si capisce più quello che c'è scritto e non si trova l'errore. "Pulendo" un po' la tua formula si ha:

dp=( (ycrit-b(4)) / (b(1)*vp.^b(3)) )^(1/b(2))

I problemi, ora un po' meglio visibili, sono:
- Nella frazione (ycrit-b(4)) / (b(1)*vp.^b(3)) la divisione non può essere fatta con / ma deve essere usato l'operatore elemento per elemento ./. Sei infatti nel caso vettore ./ vettore e non in vettore / scalare.
- Una volta calcolata la frazione, che è in realtà un vettore, anche l'esponente esterno ^ deve essere corretto nell'operatore elemento per elemento .^

In definitiva la formula diventa:
dp=( (ycrit-b(4)) ./ (b(1)*vp.^b(3)) ).^(1/b(2))

Fammi sapere,
M.