如何使用函数值在2D中使用surf gird进行绘图

时间:2016-12-29 09:02:56

标签: matlab plot scatter-plot surf imshow

如果函数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) ;

enter image description here

在我的情况下,我使用最小二乘法计算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');

enter image description here

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

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

enter image description here

由于

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

1 个答案:

答案 0 :(得分: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)