【问题标题】:How to plot using surf gird in 2D using function value如何使用函数值在 2D 中使用 surf gird 进行绘图
【发布时间】:2017-05-13 13:52:43
【问题描述】:

如果函数 F 可用,则很容易绘制冲浪图,即

x=1:0.1:4;
y=1:0.1:4;
[X,Y]=meshgrid(x,y);
Z=sin(X).^2+cos(Y).^2;
surf(X,Y,Z);
view(2) ;

在我的例子中,我使用最小二乘法计算了 F 函数: 例如我有 x 和 y 向量

x = [0    9.8312   77.1256  117.9810   99.9979];
y = [0    2754.5    4043.3    5376.3    5050.4];

这两个向量的线性函数由定义

F= [1149.73 , 37.63];

因此估计等于

z= [ones(5,1) x']*F';

这是

z = [1149.73    1519.67 4051.96 5589.35 4912.65];

如果它被绘制

plot(x,y,'b.');
hold on;plot(x,y,'b-');
hold on; plot(x,z,'-r');

线性 z(红线)显示正确。现在我想使用网格为 x 和 y 的所有可能组合绘制它,并且我需要为所有输入设置一个网格 [X,Y] = 网格网格(x,y);

但是如何使 Z 矩阵显示函数 Z 的强度图? Z 假设具有接近 z 值的高强度和远离它的较小值。我应该想得到这样的东西

谢谢

P.S:F 是使用 pinv(最小二乘法)计算的。

【问题讨论】:

    标签: matlab plot scatter-plot surf imshow


    【解决方案1】:

    您必须插入分散的数据以将其绘制在网格上。这是您的 x、y 和 z 向量的简单示例

      xi=linspace(min(x),max(x),100)
      yi=linspace(min(y),max(y),100)
      [XI YI]=meshgrid(xi,yi);
      ZI = griddata(x,y,z,XI,YI);
      contourf(XI,YI,ZI)
    

    【讨论】:

    • 这是一个不错的解决方案,但我应该如何处理 'NaN' 值?如果我设置为零,它不会很平滑,为什么许多值的插值都失败了?
    • 尝试使用另一种插值方法,例如ZI = griddata(x,y,z,XI,YI, '方法', 'v4');
    • 我不熟悉griddata,但为什么'v4'方法与其他方法有很大不同?强度不同。恐怕我选择'v4'是错的
    • 使用 'v4' 会出错,因为给出负值并且绘图会出错,默认值是正确的,但我不知道如何处理 Nan 值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多