Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何编写代码来判断结果是实数还是复数,并将其存储在向量中?_Matlab - Fatal编程技术网

Matlab 如何编写代码来判断结果是实数还是复数,并将其存储在向量中?

Matlab 如何编写代码来判断结果是实数还是复数,并将其存储在向量中?,matlab,Matlab,如果我想计算二次方程的根,如下所示: A=0.07; B=1.50+1.31*x_1; C=-1.37*x_1+1.08*x_1^2-0.15; x_2=(-B+sqrt(B^2-4*A*C))/(2*A) 其中x_1是一个参数,我想从网格linspace(-1.5,2.5200)中选择x_1。如果x_2的值是实数,那么我将该值存储在向量ra中,否则,x_2是复数,忽略它。最后,我将得到一个向量ra=[x_21,x_22,x_23,…x_2k]。我被困在如何编写代码来完成它 %I

如果我想计算二次方程的根,如下所示:

 A=0.07;
 B=1.50+1.31*x_1;
 C=-1.37*x_1+1.08*x_1^2-0.15;
 x_2=(-B+sqrt(B^2-4*A*C))/(2*A)
其中
x_1
是一个参数,我想从网格
linspace(-1.5,2.5200)
中选择
x_1
。如果
x_2
的值是实数,那么我将该值存储在向量
ra
中,否则,
x_2
是复数,忽略它。最后,我将得到一个向量
ra=[x_21,x_22,x_23,…x_2k]
。我被困在如何编写代码来完成它

   %I try to write such a code as follows but I am confused about this for loop.
   for x_1=linspace(-1.5,2.5,200)
    if isreal(x_2)=1
     ra==x_2
   elseif isreal(x_2)=0
   end

使用元素操作评估所有元素的二次函数可能是一种选择。这里,我评估
x_2
中向量/网格元素的所有索引
x_1
。执行此操作后,可以使用
~isreal
创建for循环以消除所有非实(复杂组件),其中
~
表示非/函数的补充。在这种情况下,可以将其视为非真实。在这里,我用占位符
NaN
(不是数字)替换任何复杂的组件,但是您可以通过此代码段下面的替代代码轻松地只存储实数

方法1:用NaN(非数字)占位符替换复数
方法2:仅实数(可选代码段) 使用MATLAB R2019b运行

x_1 = linspace(-1.5,2.5,200);

A = 0.07;
B = 1.50 + 1.31.*x_1;
C = -1.37.*x_1 +1.08.*x_1.^2 - 0.15;
x_2 = (-B + sqrt(B.^2-4.*A.*C))./(2.*A);
x_2 = x_2.';

for Value = 1: length(x_2)
   
   if ~isreal(x_2(Value)) 
   x_2(Value) = NaN;
   end
    
end

x_2
x_1 = linspace(-1.5,2.5,200);

A = 0.07;
B = 1.50 + 1.31.*x_1;
C = -1.37.*x_1 +1.08.*x_1.^2 - 0.15;
x_2 = (-B + sqrt(B.^2-4.*A.*C))./(2.*A);
x_2 = x_2.';

Row = 1;
for Value = 1: length(x_2)
   
   if isreal(x_2(Value)) 
   x_2_Result(Row,1) = x_2(Value);
   Row = Row + 1;
   end
    
end

x_2_Result