MATLAB用于繪制圖形效果非常好,所以一般的實驗繪圖都是由MATLAB完成,對于三維圖形MATLAB也能很好地展示。
下面以一塊三維曲面為例,繪制海洋圖。
首先需要將三維曲面加載進工作空間,我們使用loadoff()函數完成,導入之后存儲為filename.mat:
function shape = loadoff(filename)shape = [];f = fopen(filename, 'rt');n = '';while isempty(n) fgetl(f); n = sscanf(fgetl(f), '%d %d %d');end nv = n(1);nt = n(2);data = fscanf(f, '%f');if(length(data) == nv*3 + nt*3) numsInTri = 3;else if(length(data) == nv*3 + nt*4) numsInTri = 4; else error('file format not supported'); endendshape.TRIV = reshape(data(end-numsInTri*nt+1:end), [4 nt])';if(numsInTri ==4) shape.TRIV = shape.TRIV(:,2:4);endif(shape.TRIV(1) == 0) shape.TRIV = shape.TRIV + 1;enddata = data(1:end-numsInTri*nt);data = reshape(data, [length(data)/nv nv]);shape.X = data(1,:)';shape.Y = data(2,:)';shape.Z = data(3,:)';fclose(f);
接著,便是繪制海洋圖,三維曲面以點為元素,所以要將將每個點的數值(比如熱核簽名的值,比如實驗誤差等)導入MATLAB中,存成data.mat文件以便下次加載,然后就是繪圖啦,下面是代碼:
load filename.matload data.matfigure(1)trisurf( filename{1}.TRIV, filename{1}.X, filename{1}.Y, filename{1}.Z, data(:,1)), axis image, lighting phong; %顯示三維曲面,lighting phong;是光照%shading interp, %隱藏網格線
colormap jet(2048) %自定義色彩,有jet,sPRing,autumn等colorbar, %顯示colorbar
caxis([0,1])% 定義colorbar范圍大小
%colorbar('YTickLabel',{' '}) %隱藏colorbar刻度
view([-102 -20]), %視角title('海洋圖')axis off
新聞熱點
疑難解答