matlab non può dividere usando /
-
28-10-2019 - |
Domanda
Ho una semplice funzione che assume un valore
Questo valore è contrassegnato da una serie di istruzioni if o elseif per calcolare un altro valore.
Il problema è che sembra trovare un errore durante il tentativo di esecuzione che dice
Errore durante l'utilizzo di / Le dimensioni della matrice devono concordare.
Errore in abc (riga 9) a= 5000 / g;
il codice è il seguente
function abc(g)
if (g == 100)
a = 1;
elseif (g <= 99 & g >= 50)
a = 200 -2*g;
elseif (g <= 50 & g >= 1)
a = 5000 / g;
else
warning('Invalid value passed, a defaults to 1');
a =1;
end
end
Quindi, sto passando abc 100 e mi aspetto che a sia 1 ma invece passa attraverso ogni if / elseif e genera un errore su a= 5000 / g
Dovrei anche menzionare che inizialmente ho provato a usare && negli elseif, ma questo ha anche dato un errore che diceva
Operandi per ||Gli operatori e && devono essere convertibili in valori scalari logici.
Errore in abc (riga 6) elseif (g <= 99 && g>= 50)
Qualcuno ha idea di cosa stia succedendo qui? Grazie
Soluzione
Probabilmente stai passando una matrice alla tua funzione, ad es. quando chiami
abc(yourdata)
yourdata
in realtà non è un numero, ma una matrice. Se hai chiamato direttamente
abc(100)
non dovresti vedere il tuo problema (o lo fai?).
In altre parole, il tuo problema principale non è all'interno della tua funzione , ma quando la chiami!
Data la tua descrizione, sembra che tu abbia impostato yourdata(1)
sul valore 100 che vuoi testare, ma qualche altro elemento della matrice ha un valore diverso, motivo per cui il costrutto if
si ramifica nel caso else. Lì, è necessario ./
invece di /
se si desidera eseguire la divisione in termini di elementi invece di divisione della matrice .
Ma in realtà probabilmente devi solo assicurarti che yourdata
sia scalare quando chiami la tua funzione.