2d plot of a function with two variables

15 visualizaciones (últimos 30 días)
Vinci
Vinci el 9 de Mayo de 2017
Respondida: Star Strider el 9 de Mayo de 2017
I'm trying to represent a waveform on a transmission line given by the following formula:
y(x,t)=A*sin(phase_constant*x-2*pi*freq*t)
I need to plot the amplitude y versus distance x along the line at time (t) = 0
Do I need a for loop to do this?
  1 comentario
Stephen23
Stephen23 el 9 de Mayo de 2017
Editada: Stephen23 el 9 de Mayo de 2017
"Do I need a for loop to do this?"
No, you do not need to use a loop. Use ndgrid, or repmat, or bsxfun, or whatever suits your data, and make sure that you write vectorized code:
Also keep in mind the difference between array and matrix operations:

Iniciar sesión para comentar.

Respuestas (2)

Star Strider
Star Strider el 9 de Mayo de 2017
Since ‘t=0’ (or any other constant), this becomes a univariate function. You can plot it with fplot (or ezplot):
A = 42; % Substitute Correct Value
phase_constant = 2*pi*rand; % Substitute Correct Value
freq = 60; % Substitute Correct Value
y = @(x,t) A*sin(phase_constant*x-2*pi*freq*t);
figure(1)
fplot(@(x) y(x,0), [0 10])
grid
See the documentation on the various functions, and on Anonymous Functions for details.

Santhana Raj
Santhana Raj el 9 de Mayo de 2017
No.You need not. generate vectors of x and t. Then implement the function for y. Use mesh to plot result.
Remember to use the operator '.*' instead of * for element by element multiplication of a matrix/array/vector.

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by