Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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_If Statement - Fatal编程技术网

Matlab 逻辑运算符误差

Matlab 逻辑运算符误差,matlab,if-statement,Matlab,If Statement,我正在电气工程课上写一个函数,作为我们要制作示波器的实验室的一部分。这个特殊的函数是我们的软件“触发电路”。如果它满足某些条件,这个函数应该注册为1。确切的措辞是: “编写一个名为triggering_circuit(触发_电路)的MATLAB函数,该函数具有以下输入参数:过去_采样、当前_采样、触发_电平和触发_斜率。如果触发_电平介于过去_采样和当前_采样之间,以及当前采样和过去采样之间的差值(即,当前_采样-过去_采样),该函数将返回值1。”具有与触发坡度相同的符号。” 我们感觉好像已经正

我正在电气工程课上写一个函数,作为我们要制作示波器的实验室的一部分。这个特殊的函数是我们的软件“触发电路”。如果它满足某些条件,这个函数应该注册为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)
调用时返回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