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);

 채택된 답변

KSSV
KSSV 2020년 5월 4일

0 개 추천

x = -100:0.1:100;
y = sin(pi*x/2)./(x*pi);
y(x==0) = 1/2 ;
plot(x, y);

추가 답변 (1개)

Johannes Hougaard
Johannes Hougaard 2020년 5월 4일

1 개 추천

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...

카테고리

도움말 센터File Exchange에서 Mathematics에 대해 자세히 알아보기

태그

질문:

2020년 5월 4일

답변:

2020년 5월 4일

Community Treasure Hunt

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

Start Hunting!

Translated by