首页 > 解决方案 > 为什么 condition2 condition3 和 condition4 double 不合逻辑?

问题描述

a=0.336;
Ta=9.476;
Te=1.208;
Tw=1.498;
eqh=[0.661;0.619;0.568];
ex=[-1.24;-1.346;-1.441];
en=-ex;
ey=[0.376;0.705;0.968];
eqx=[-0.309;-0.357;-0.392];
eh=[1.594;1.583;1.545];
eyqh=[0.642;0.78;0.897];
a0=a*Ta*Te^2;
r = -100:1:100;
[bt,Td]=meshgrid(r);
 i=1;
        figure('Name','Stable');
        Kp=1./bt;
        exqh(i)=en(i).*eqh(i)+eqx(i).*eh(i);
        Ki=1./(bt.*Td);
        a1=Ta.*Tw.*eqh(i)+a.*Te^2.*en(i)+a.*Te^2.*ey(i).*Kp;
        a2=a.*Te^2.*Ki*ey(i)+Ta+Tw.*exqh(i)-eyqh(i).*Kp.*Tw;
        a3=en(i)+ey(i).*Kp-eyqh(i).*Ki.*Tw;
        a4=ey(i).*Ki;
        condition1 =a1>0; output = ones(length(r));condition2=zeros(size(condition1));condition3=zeros(size(condition1));condition4=zeros(size(condition1));
        for j=1:numel(a1)
            condition2(j)=det([a1(j) a0;a3(j) a2(j)])>0;
            condition3(j) =det([a1(j) a0 0;a3(j) a2(j) a1(j);0 a4(j) a3(j)])>0;
            condition4(j)=det([a1(j) a0 0 0;a3(j) a2(j) a1(j) a0;0 a4(j) a3(j) a2(j);0 0 0 a4(j)])>0;
        end
            output(~(condition1 & condition2 & condition3 & condition4)) = 0;
            imshow(output, 'xdata', r, 'ydata', r);
            axis on;

在这种情况下,条件 1 是逻辑的,但条件 2 条件 3 和条件 4 不是逻辑而是双重的。

第一个:为什么condition2 3 and 4 double 不合逻辑?第二个:如何将条件2 条件3 和条件4 更改为逻辑?

标签: matlab

解决方案


您在预分配时没有指定类型condition2名,condition3并且condition4使用zeros. 如果未指定类型名,则默认分配双精度数据类型。将类型名指定为“逻辑”以使它们成为逻辑,即

condition2 = zeros(size(condition1),'logical');

对其他人也是如此。


推荐阅读