Matlab 如果输入的是一个数字列表而不是单个数字,则函数返回错误的数据

Matlab 如果输入的是一个数字列表而不是单个数字,则函数返回错误的数据,matlab,function,if-statement,plot,Matlab,Function,If Statement,Plot,当我绘制函数时,从函数中获得正确的输出有点困难 我编写了一个简单的函数,它将x作为输入,并将x作为输出返回。但是如果x大于75我将返回25作为输出(如果x超过75,则基本上将输出限制为25) 当我给它一个正常的数字时,该函数按预期工作,但当我给它一个数字列表时,它完全忽略我的if语句,只返回x,而不管输入是什么 完整代码: x = 0:0.1:200; y = f(x); plot(x,y) function output = f(x) if (x >= 75) o

当我绘制函数时,从函数中获得正确的输出有点困难

我编写了一个简单的函数,它将
x
作为输入,并将
x
作为输出返回。但是如果
x
大于
75
我将返回
25
作为输出(如果
x
超过75,则基本上将输出限制为25)

当我给它一个正常的数字时,该函数按预期工作,但当我给它一个数字列表时,它完全忽略我的if语句,只返回
x
,而不管输入是什么

完整代码:

x = 0:0.1:200;
y = f(x);
plot(x,y)
function output = f(x)
    if (x >= 75)
        output = 25;
    else
        output = x;
    end
end
我的情节最终是这样的: 但我希望我的情节是这样的:

但是,如果我只使用一个数字的函数,它会按预期工作。例如,如果我做了类似的事情:

x = 75;
y = f(x)
function output = f(x)
    if (x >= 75)
        output = 25;
    else
        output = x;
    end
end

为什么我的函数不能与数组输入一起工作?如何修复它?

如果希望函数在数组上运行,则需要显式地将其更改为使用数组,或者为每个元素调用函数

调用每个元素 写入
f
以处理数组 为此,可以使用将数组中值大于或等于75的元素替换为25。这将是最有效的选择

也可以编写函数来循环输入数组

function output = f(x)
    output = x
    for k = 1:numel(x)
        if output(k) >= 75
            output(k) = 25
        end
    end
end

如果希望函数在数组上运行,则需要显式地将其更改为使用数组,或者为每个元素调用函数

调用每个元素 写入
f
以处理数组 为此,可以使用将数组中值大于或等于75的元素替换为25。这将是最有效的选择

也可以编写函数来循环输入数组

function output = f(x)
    output = x
    for k = 1:numel(x)
        if output(k) >= 75
            output(k) = 25
        end
    end
end

不在Suever的回答中:
如果
具有数组,则仅当数组中的所有元素都为true时才会触发。因此,如果
x
中的任何元素不是
=75
,则执行
else
语句<代码>如果x>=75相当于
如果all(x>=75)
。此外,一行
输出=(x>75)。*25+(x75)
(xNot在Suever的回答中:
if
仅当数组中的所有元素均为true时才会触发。因此,如果
x
中的任何元素不是
=75
,则执行
else
语句。
如果x>=75
相当于
如果all(x>=75)
。此外,一行
输出=(x>75)。*25+(x75)
(x
function output = f(x)
    output = x
    for k = 1:numel(x)
        if output(k) >= 75
            output(k) = 25
        end
    end
end