[MATLAB] errore nell'uso di 'inline'
salve, sono innumerevoli i tentitavi di usare questa funzione con 'inline'. ottengo sempre quel messaggio di errore.
la funzione : F=|sin|^(24/9) * log(x) / (x^2+x+10) ;
Ho cambiato piu volte la sintassi, nn so dove sbaglio.
f =
Inline function:
f(x) = (abs(sin(x)).^(24/9).*log(x)./((x.^2) + x + 10)
>> y=f(x)
??? Error using ==> inlineeval
Error in inline expression ==> (abs(sin(x)).^(24/9).*log(x)./((x.^2) + x + 10)
??? Error: Incomplete or misformed expression or statement.
Error in ==> inline.subsref at 25
INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
>>
grazie.
la funzione : F=|sin|^(24/9) * log(x) / (x^2+x+10) ;
Ho cambiato piu volte la sintassi, nn so dove sbaglio.
f =
Inline function:
f(x) = (abs(sin(x)).^(24/9).*log(x)./((x.^2) + x + 10)
>> y=f(x)
??? Error using ==> inlineeval
Error in inline expression ==> (abs(sin(x)).^(24/9).*log(x)./((x.^2) + x + 10)
??? Error: Incomplete or misformed expression or statement.
Error in ==> inline.subsref at 25
INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
>>
grazie.
Risposte
Ma non è quella la sintassi per definire una funzione inline in matlab.. Un metodo potrebbe essere il seguente:
Dai una occhiata nella documentazione di Matlab per ulteriori dettagli ed esempi. Non ho verificato che il codice della funzione è corretto in matlab. Se ci sono problemi guarda la documentazione che ti ho consigliato.
In futuro utilizza il tag code per inserire il codice e scrivi le formule in TeX.
f = @(x) (abs(sin(x)).^(24/9).*log(x)./((x.^2) + x + 10)
Dai una occhiata nella documentazione di Matlab per ulteriori dettagli ed esempi. Non ho verificato che il codice della funzione è corretto in matlab. Se ci sono problemi guarda la documentazione che ti ho consigliato.
In futuro utilizza il tag code per inserire il codice e scrivi le formule in TeX.
"apatriarca":
Ma non è quella la sintassi per definire una funzione inline in matlab.. Un metodo potrebbe essere il seguente:
f = @(x) (abs(sin(x)).^(24/9).*log(x)./((x.^2) + x + 10)
Dai una occhiata nella documentazione di Matlab per ulteriori dettagli ed esempi. Non ho verificato che il codice della funzione è corretto in matlab. Se ci sono problemi guarda la documentazione che ti ho consigliato.
In futuro utilizza il tag code per inserire il codice e scrivi le formule in TeX.
Questo è la sintassi di inserimento.
Scusa le omissini ma sono veramente distrattone.
f=inline('(abs(sin(x)).^(24/9).*log(x)./((x.^2) + x + 10)')
Nel codice c'è una parentesi di troppo.
"apatriarca":
Nel codice c'è una parentesi di troppo.
infatti, sono in piu ma cmq mi accettava il comando.
f=inline('(abs(sin(x)).^(24/9).*log(x)./((x^2) + x + 10)')
f =
Inline function:
f(x) = (abs(sin(x)).^(24/9).*log(x)./((x^2) + x + 10)
>>
riscritta cosi:
f=inline('(abs(sin(x)).^(24/9)).*log(x)./((x^2) + x + 10)')
viene accettata lo stesso il comando.
ma appena faccio
y=f(x)
ho sempre il messaggio di errore:
??? Error using ==> inlineeval
Error in inline expression ==> (abs(sin(x)).^(24/9)).*log(x)./((x^2) + x + 10)
??? Error using ==> mpower
Matrix must be square.
Error in ==> inline.subsref at 25
INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
L'errore mi sembra a questo punto abbastanza chiaro e non ha niente a che fare con l'uso di inline. Per poter elevare a potenza la matrice deve essere quadrata. Il problema è nell'espressione x^2 che avrebbe dovuto essere x.^2. Un'errore di distrazione suppongo.
P.S. Preferisco comunque per molte ragioni l'uso delle funzioni anonime. Innanzitutto perché quell'errore sarebbe stato generato alla creazione della funzione e non alla prima chiamate della stessa. E poi perché non mi piace scrivere la funzione in una stringa.
P.S. Preferisco comunque per molte ragioni l'uso delle funzioni anonime. Innanzitutto perché quell'errore sarebbe stato generato alla creazione della funzione e non alla prima chiamate della stessa. E poi perché non mi piace scrivere la funzione in una stringa.
"apatriarca":
L'errore mi sembra a questo punto abbastanza chiaro e non ha niente a che fare con l'uso di inline. Per poter elevare a potenza la matrice deve essere quadrata. Il problema è nell'espressione x^2 che avrebbe dovuto essere x.^2. Un'errore di distrazione suppongo.
P.S. Preferisco comunque per molte ragioni l'uso delle funzioni anonime. Innanzitutto perché quell'errore sarebbe stato generato alla creazione della funzione e non alla prima chiamate della stessa. E poi perché non mi piace scrivere la funzione in una stringa.
ok, non solo distrazione
