Why are complex values obtained for the below function (x) in the if condition?
조회 수: 1 (최근 30일)
이전 댓글 표시
Hi there! I'm facing an issue with the below function. The function is supposed to generate values for x that are not imaginary. However, I'm getting a warning: "Imaginary parts of complex X and/or Y arguments ignored." To be more specific, unlike the output shown in the figure, when y is equal to 0, the function should calculate x=0. Can you please assist me in finding out what could be causing this issue?
clc
close all
clear all
a = 280;
b = 580;
c = 0.35;
d =1.71E5;
e = 7;
f = 1+(3.5*(a/b));
g = d/(1+(0.002*e*(d/a)));
y = (0:2.5:b);
if any(y <= a)
x = (y/d)+(0.002*((y/a).^e));
if any(y > a)
x = 0.002+(a/d)+((y-a)/g)+(c.*(((y-a)/(b-a)).^f));
end
end
plot(x,y)
xlabel('x')
ylabel('y')
댓글 수: 0
채택된 답변
Matt J
2023년 11월 14일
Because you are raising a negative number to a fractional power, e.g.,
(-2)^1.5
추가 답변 (1개)
Torsten
2023년 11월 14일
Maybe you mean
clc
close all
clear all
a = 280;
b = 580;
c = 0.35;
d =1.71E5;
e = 7;
f = 1+(3.5*(a/b));
g = d/(1+(0.002*e*(d/a)));
y = (0:2.5:b);
x = zeros(size(y));
idx = y<=a;
x(idx) = (y(idx)/d)+(0.002*((y(idx)/a).^e));
x(~idx) = 0.002+(a/d)+((y(~idx)-a)/g)+(c.*(((y(~idx)-a)/(b-a)).^f));
plot(x,y)
xlabel('x')
ylabel('y')
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Signal Generation, Manipulation, and Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!