让人很听话 2024-06-26 15:18 采纳率: 88.9%
浏览 180

报错plot数据维度超过2维,没超过啊,咋改,thanks

img


x=-5:0.1:5;
longge=@(x) 1./(x.^2+1);
y=longge(x);
figure(1);
plot(x,y,'r:') %真实曲线

%5等分拉格朗日插值
new_x1=linspace(-5,5,5);
%10等分拉格朗日插值
new_x2=linspace(-5,5,10);
%拉格朗日插值
y1=Lagrange(x,y,new_x1);
y2=Lagrange(x,y,new_x2);
figure(2);
plot(x,y,'r:',new_x1,y1,'r-',new_x2,y2,'b-')
legend('龙格函数真实曲线','5等分拉格朗日插值','10等分拉格朗日插值','Location','northeast')   

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-26 15:18
    关注

    引自免费微信小程序:皆我百晓生

    在MATLAB中,如果你尝试创建一个二维图形,并且试图绘制的数据超过了两个坐标轴,那么MATLAB会抛出错误。这通常是因为你的数据集过大,以至于它超过了屏幕的显示范围。

    要解决这个问题,你需要确保你在绘图之前清理了你的数据。这可以通过删除多余的点或线段来实现。例如,在你的例子中,你可以先删除new_x2中的所有点,然后再绘制新的数据点。

    此外,MATLAB允许你在绘图之前调整图像大小。这可以通过设置figsize参数来完成。例如,你可以将当前窗口调整为宽度为4个单位长度(即4行)和高度为3个单位长度(即3列),这样就不会有超出的警告了。

    下面是修改后的代码:

    x = -5:0.1:5; % 数据集
    longge = @(x) 1./(x.^2 + 1); % 龙格函数
    y = longge(x);
    
    % 清理数据
    del(new_x2)
    
    % 设置图像大小
    figsize([4,3])
    
    figure(1)
    plot(x, y, 'r:', new_x1, y1, 'r-', new_x2, y2, 'b-')
    
    % 绘制标签
    legend('龙格函数真实曲线', '5等分拉格朗日插值', '10等分拉格朗日插值', 'Location', 'northeast')
    
    % 更改图像标题
    title('Plot of Lagrange Interpolation and Real Curve')
    xlabel('X-axis')
    ylabel('Y-axis')
    
    % 添加网格线
    grid on
    
    % 显示图形
    view(9,6)
    

    这个代码首先清理了new_x2中的所有数据,然后设置了图像大小,然后添加了标签,最后显示了图形。这应该可以解决你的问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 6月26日
  • 创建了问题 6月26日