What's wrong with this expression?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello,
I have a vector x=[0:1:1000] and I would like to write the general expression of Gaussian(a,b,c,x) vector where a,b,c are its parameters that I can define time by time. Then I should plot it. The main problem is to write the expression
y=a*'exp(-(x-b)*'(x-b)/'(c*c))
that is in this way, not correct.. Thanks Bye Marco
0 commentaires
Réponses (2)
Roger Stafford
le 1 Avr 2015
Modifié(e) : Roger Stafford
le 1 Avr 2015
y=a*exp(-(x-b).^2/c^2);
0 commentaires
Adam Wyatt
le 1 Avr 2015
Are a, b, & c scalars. If so: y = a*exp(-((x-b)/c).^2);
However, a more general version makes use of bsxfun ( see this post ) so that it can accept variable inputs:
% Search documentation for anonymous functions
Gaussian = @(A, x0, dx, x) bsxfun(@times, A, exp(-bsxfun(@rdivide, bsxfun(@minus, x, x0), dx).^2));
Lets say you wanted to generate a Gaussian at different central positions:
x = (0:1000).'; % x is a column vector - good practise to use column vectors
x0 = [300; 500; 600]; % x0 is a column vector
y = Gaussian(1, x0.', 100, x); % y is a 2D matrix with x (the domain) down the columns, x0 along the rows
plot(x, y); % Plot three shifted Gaussians
0 commentaires
Voir également
Catégories
En savoir plus sur Data Preprocessing 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!