目标,
针对一个平面内某个指标在不同位置会有不同的数值,
因而得到一个平面的二维矩阵,
利用matlab绘制云图。
之前的记录比较散,
网上很多例子是基于某一个函数,因而xy的坐标是已知的,且Z是根据函数算出来的。
另一类是已知3列数据,两列为坐标数值,最后一列为Z。
当面对大量数据时,无能为力。
当然面对几十万的数据点的优化还没有考虑。
目前只能通过改变插值方式,
但是得到的拟合结果并不理想。
由此做引:
%a=[10 20 30;20 30 40; 40 50 60];%例子
a=xlsread('randarray.xlsx'); %读取
[M N]=size(a);%获取矩阵大小
[X, Y] = meshgrid(1:M, 1:N);dm = [Y(:) X(:)]; %获取矩阵行列坐标
Xx=dm(:,1);Yy=dm(:,2);%分别导出行列数据
b=a(:); %将矩阵数据强制变为列向量,注意与前面的Xx,Yy对应
xm=linspace(min(Xx),max(Xx),100);%用于griddata
ym=linspace(min(Yy),max(Yy),100);%用于griddata
[X,Y,Z]=griddata(Xx,Yy,b,xm',ym,'v4');%注意xm必须要转置!!!!
figure(1); %打开图1
%contourf(X,Y,Z,200);%绘制二维云图
contourf(X,Y,Z,'LineStyle','none') %去掉黑色等高线
shading flat;%保持光滑效果
hold on;
figure(2); %打开图2
surf(X,Y,Z); %绘制三维云图
shading interp; %去掉等高线
hold on;