How to plot this function

2 visualizaciones (últimos 30 días)
O Kyung Kwon
O Kyung Kwon el 4 de Mayo de 2020
Respondida: Johannes Hougaard el 4 de Mayo de 2020
I want to plot y for x this equation.
y = 1/2 for x = 0
sin(pi*x/2)/(x*pi) for otherwise
So, I write this code. but It doesnt work. Help me friends.
x = -100:0.1:100;
if x == 0
y = 1/2;
else
y = sin(pi*x/2)/(x*pi);
end
plot(x, y);

Respuesta aceptada

KSSV
KSSV el 4 de Mayo de 2020
x = -100:0.1:100;
y = sin(pi*x/2)./(x*pi);
y(x==0) = 1/2 ;
plot(x, y);

Más respuestas (1)

Johannes Hougaard
Johannes Hougaard el 4 de Mayo de 2020
You need to use the element-wise multiplication/division (.* or ./) rather than the matrix based multiplication (* or /).
...and then do the zeroexemption afterwards
This code should do the trick:
x = -100:0.1:100;
y = sin(pi.*x/2)./(x.*pi);
y(x==0) = 1/2;
plot(x,y);
If you were to do it in a for loop (which I'd strongly disadvice, but it can be useful to know for other purposes) it would be:
x = -100:0.1:100;
y = ones(size(x)); %pre-allocating for speed
for ii = 1:length(x)
if x(ii) == 0
y(ii) = 1/2;
else
y(ii) = sin(pi.*x(ii)/2)./(x(ii).*pi);
end
end
plot(x,y);
The for-loop is a tenfold slower and more complex...

Categorías

Más información sobre Logical 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