matlab - 为什么 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 更改为逻辑?
解决方案
您在预分配时没有指定类型condition2
名,condition3
并且condition4
使用zeros
. 如果未指定类型名,则默认分配双精度数据类型。将类型名指定为“逻辑”以使它们成为逻辑,即
condition2 = zeros(size(condition1),'logical');
对其他人也是如此。
推荐阅读
- c# - 如何定义一个字符串数组列表?
- https - 微服务:只能使用 KestrelServerOptions.Listen 配置 Https 端点
- python - 当行以特定单词开头时搜索测试
- c# - IIS 中 Ghostscript.NET.dll 中的“Ghostscript.NET.GhostscriptLibraryNotInstalledException”
- oracle - 一年中的12个月,每个月随机选择一个日期,不包括周六和周日
- excel - Excel 天数 360 功能。- 二月的天数问题
- sql - 如何快速自我加入(与 distinct on 相同)?
- python - 为什么在使用这个 lambda 函数时 .issubset(x) 中应该有一个 x?
- android - Edittext 移除焦点并且不将焦点转移到其他edittext
- r - 使用样本均值作为 R 中截距的方差分析