Matlab 逻辑运算符误差
我正在电气工程课上写一个函数,作为我们要制作示波器的实验室的一部分。这个特殊的函数是我们的软件“触发电路”。如果它满足某些条件,这个函数应该注册为1。确切的措辞是: “编写一个名为triggering_circuit(触发_电路)的MATLAB函数,该函数具有以下输入参数:过去_采样、当前_采样、触发_电平和触发_斜率。如果触发_电平介于过去_采样和当前_采样之间,以及当前采样和过去采样之间的差值(即,当前_采样-过去_采样),该函数将返回值1。”具有与触发坡度相同的符号。” 我们感觉好像已经正确地编写了函数,但是当我们尝试在函数中调用它时,我们会得到错误: “触发_电路错误(第4行) 如果触发电平>=过去采样和触发电平<代码>功能[m]=触发电路(过去采样、当前采样、触发电平、触发斜率) 如果触发级别>=过去的采样和触发级别0和触发坡度>0 m=1; 其他的 m=0; 结束 其他的 m=0;%#这是设置m=0的地方 结束 结束 我不确定您是否已经弄明白了,但是您必须为使用函数声明的输出参数返回一些内容(在本例中为m),并且在当前设置中,存在无法返回任何内容的情况 因此,代码中的函数调用如下: m=触发电路(0.9884,1.0130,1,1)Matlab 逻辑运算符误差,matlab,if-statement,Matlab,If Statement,我正在电气工程课上写一个函数,作为我们要制作示波器的实验室的一部分。这个特殊的函数是我们的软件“触发电路”。如果它满足某些条件,这个函数应该注册为1。确切的措辞是: “编写一个名为triggering_circuit(触发_电路)的MATLAB函数,该函数具有以下输入参数:过去_采样、当前_采样、触发_电平和触发_斜率。如果触发_电平介于过去_采样和当前_采样之间,以及当前采样和过去采样之间的差值(即,当前_采样-过去_采样),该函数将返回值1。”具有与触发坡度相同的符号。” 我们感觉好像已经正
调用时返回m=1 以下是逻辑操作数的参考:
功能[m]=触发电路(过去采样、当前采样、触发电平、触发斜率)
如果触发级别>=过去的采样和触发级别0和触发坡度>0
m=1;
其他的
m=0;
结束
其他的
m=0;%#这是设置m=0的地方
结束
结束
我不确定您是否已经弄明白了,但是您必须为使用函数声明的输出参数返回一些内容(在本例中为m),并且在当前设置中,存在无法返回任何内容的情况
因此,代码中的函数调用如下:
m=触发电路(0.9884,1.0130,1,1)调用时返回m=1 以下是逻辑操作数的参考:
验证您的输入是否如预期的那样,如果不输入主
if
-语句,我想您应该设置m=0
。您还假设current\u sample
大于pass\u sample
。好的,所以我添加了m=0,但这仍然不能解决问题。显然,我的pass\u sample和current\u sample是向量,这是我最初没有意识到的。在那一点上,我把&&改成了&对吗?还有什么我必须改变的吗?一个向量怎么可能比另一个向量大?这个描述对输入向量没有意义。请提供一些输入示例,并描述预期的输出。那么,这很难,因为如果是这样的话一个向量的me元素将小于或等于另一个向量的对应元素,但其他元素可能不是。那么你的条件是真还是假?然后你如何处理这些向量来计算m
?我很抱歉。我们的主要功能非常大,我误解了发生的事情。过去的示例和current_样本只是在for循环中被更改,它们实际上不是向量。过去的_样本和当前的_样本示例:过去的_样本=0.9884当前的_样本=1.0130最后一点,m将根据条件设置为1。这更像是一个指标,而不是其他任何东西。很抱歉进行编辑。请验证您的输入是否如预期的那样,以及d如果不输入主if
-语句,我想你应该设置m=0
。你还假设current\u sample
比pass\u sample
大。好吧,所以我添加了m=0,但这仍然不能解决问题。显然,我的pass\u sample和current\u sample是向量,我最初没有重新定义alize.在那一点上,我把&&改成了一个&对吗?还有什么我必须改变的吗?一个向量怎么可能比另一个向量大?这个描述对输入向量没有意义。请提供一些输入示例并描述预期的输出。这很难,因为如果一个向量的某些元素比n或等于另一个向量的对应元素,但其他元素可能不是。那么你的条件是真还是假?然后你如何处理这些向量来计算m
?我很抱歉。我们的主函数非常大,我误解了发生的事情。过去的样本和当前的样本只是在a中为l更改哦,它们实际上不是向量。过去的样本和当前的样本的一个例子是:过去的样本=0.9884当前的样本=1.0130最后一个点,m被设置为1取决于条件。它更像是一个指示器。很抱歉编辑。是的!就是这样!非常感谢!是的!就是这样!非常感谢!
function [ m ] = triggering_circuit( past_sample, current_sample, trigger_level, trigger_slope )
if trigger_level >= past_sample && trigger_level <= current_sample
a = current_sample - past_sample;
if a < 0 && trigger_slope < 0
m = 1;
elseif a > 0 && trigger_slope > 0
m = 1;
else
m = 0;
end
end
end
function [ m ] = triggering_circuit(past_sample, current_sample, trigger_level, trigger_slope )
if trigger_level >= past_sample && trigger_level <= current_sample
a = current_sample - past_sample;
if a < 0 && trigger_slope < 0
m = 1;
elseif a > 0 && trigger_slope > 0
m = 1;
else
m = 0;
end
else
m = 0; %# This is where you would set m = 0
end
end