MATLAB Answers

What's wrong with this expression?

1 view (last 30 days)
massi on 1 Apr 2015
Answered: Adam Wyatt on 1 Apr 2015
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
that is in this way, not correct.. Thanks Bye Marco

Answers (2)

Roger Stafford
Roger Stafford on 1 Apr 2015
Edited: Roger Stafford on 1 Apr 2015

Adam Wyatt
Adam Wyatt on 1 Apr 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

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!