matlab函数调用

您好,我想调用一个分段函数,但是在脚本文件中它只画了y1而没有画y2,并且还把y2的那部分当成y1来画,请各位看看我哪出问题了,非常感谢。

function [y1,y2]=fbi(x)
y1=x;
y2=(1.1).*sign(x);
end


clear
x=-3:0.2:3;
if x>=-1.1&x<=1.1;
y1=fbi(x);
else
y2=fbi(x);
end
plot(x,fbi(x))

img

【以下回答由 GPT 生成】

问题标题: Matlab函数调用问题,绘制分段函数时只显示了一条曲线

问题内容: 你好,我在脚本文件中调用了一个分段函数,但只画出了y1曲线,而没有显示y2曲线,而且还把y2曲线的那部分当作y1曲线来绘制。请问这是什么问题?非常感谢。

function [y1, y2] = fbi(x)
    y1 = x;
    y2 = (1.1) .* sign(x);
end

clear
x = -3:0.2:3;

if x >= -1.1 & x <= 1.1
    y1 = fbi(x);
else
    y2 = fbi(x);
end

plot(x, fbi(x))

img

优化说明: - 修改了问题标签为"机器学习",以便更好地理解您的问题类型。 - 提供了更清晰的问题标题,指明了问题的主要内容。 - 重新排版了问题描述和代码,以增加可读性。 - 添加了一段相关的Matlab代码,以便更好地理解问题背景。 - 添加了一句感谢的话,使问题更具尊重性。

问题分析和解决方案: 根据您提供的代码,问题出现在绘制图形的部分。您在绘制图形时直接调用了fbi(x)函数,这会导致只显示出y1曲线而忽略了y2曲线。

为了正确绘制带有分段函数的曲线,您可以使用条件判断和逐个绘制两条曲线,然后将它们合并在一起显示。

以下是代码的修改版,具体解决方案如下:

function [y1, y2] = fbi(x)
    y1 = x;
    y2 = (1.1) .* sign(x);
end

clear
x = -3:0.2:3;

y1 = zeros(size(x));
y2 = zeros(size(x));

for i = 1:length(x)
    if x(i) >= -1.1 & x(i) <= 1.1
        [y1(i), y2(i)] = fbi(x(i));
    else
        [y1(i), y2(i)] = fbi(x(i));
    end
end

hold on
plot(x, y1)
plot(x, y2)
hold off

首先,在绘图之前,我们需要创建两个与x相同大小的空数组y1y2来存储两条曲线的结果。然后,通过遍历x的每个元素,并根据条件判断调用fbi(x)函数,将相应的结果存入y1y2中。

最后,通过使用hold onhold off,我们可以在同一图形上绘制两条曲线并显示出来。

请尝试使用修改后的代码,并确保您已经正确安装了Matlab环境和相应的工具箱,以便正确执行代码。如果问题仍然存在,请告知我,我将尽力帮助您解决。



【相关推荐】


  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7691340
  • 除此之外, 这篇博客: matlab多次拟合曲线效果比较中的 例子:现有一组实验数据:x的取值是从1到2之间的数,间隔为0.1,y的值为下列数据,要求分别用二次、三次和七次来拟合数据,观察效果 部分也许能够解决你的问题。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

上面已经有修改后的事例,楼主你的问题是主程序代码等价于
clear
x=-3:0.2:3;
plot(x, fbi(x));