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