- displaying the anonymous function
- calling functions() to get some internal information about the anonymous function
- asking for the formula associated with the function (as text)
- asking for a text representation of the anonymous function
- storing the handle into a variable except one indexed using ()
- obscure exception: storing the handle to a non-existent variable indexed with (1)
- passing the handle as a parameter
- or invoking the anonymous function, which always requires () after the handle unless you use feval()
How to handle Error updating FunctionLine?
16 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I want to make the gif of a wave equation that the answer is:
and the initial conditions are:
Here is my code and I don't understand and I don't know how to fix it.
clear;clc;close all;
a = 1;
t0 = 1;
alpha = 1;
syms x;
%define lambda function
f = @(x) ((-a/t0).*x-a)*(x>-2*t0-0.1 & x<-t0) + ((a/t0).*x+a)*(x>-t0 & x<=0) + ((-a/t0).*x+a)*(x>0 & x<t0) + ((a/t0).*x-a)*(x>t0 & x<2*t0+0.1);
g = @(t) alpha*((-a/t0).*t-a)*(t>-2*t0-0.1 & t<-t0) + ((a/t0).*t+a)*(t>-t0 & t<=0) + ((-a/t0).*t+a)*(t>0 & t<t0) + ((a/t0).*t-a)*(t>t0 & t<2*t0+0.1);
for c = 0:0.05:1
desired_fun = @(x) (1/(2*c)).*integral(g,x-c,x+c);
my_plot = fplot((@(x) ((f(x-c) + f(x+c))/2) + desired_fun),[-t0 t0]);
frame = getframe(1);
im = frame2im(frame); %pause(0.01);
[imind,cm] = rgb2ind(im,256);
imwrite(imind,cm,"C:\Users\ernika\wave_equation.gif",'gif','WriteMode','append'); %saved as mygif1
drawnow;
if(c~=1)
delete(my_plot)
end
end
0 commentaires
Réponses (1)
Walter Roberson
le 28 Déc 2022
You define an anonymous function of one variable. In the next line you define a second anonymous function and ask to fplot it. When invoked, the second anonymous function does a calculation and tries to add the first anonymous function to the result.
This fails because it is not permitted to do arithmetic on anonymous function handles.
Remember that the only operations permitted on anonymous functions are:
In no situation can you do something like
f = @(x)x*2
f + 5
as that is not one of the listed operations.
In your second anonymous function you are not invoking the first function: invoking would require passing a parameter to the first function.
1 commentaire
Steven Lord
le 28 Déc 2022
In no situation can you do something like
f = @(x)x*2
f + 5
What you can do instead is to add the values obtained by evaluating the anonymous function and another number.
f = @(x) 2*x;
g = @(x) f(x) + 5; % Evaluate f at the input argument and add 5 to the result
g(4) % 2*4 + 5 = 13
Voir également
Catégories
En savoir plus sur Function Creation dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!