matlab contourf(data_100);,contourf以及griddata生成网格问题

function main_draw_ansys_cloud_chart

% ansys 云图绘制

clear

clc

currentPath = fileparts(mfilename('fullpath'));

ansysCloudDataFilePath = fullfile(currentPath,'velocity_t1.csv');

[rawData,~,~] = xlsread(ansysCloudDataFilePath);

x = rawData(:,1);

y = rawData(:,3);

z = rawData(:,4);

[~,ind,~]=unique([x,y],'rows');% 存在重复的(x,y)

x = x(ind);y = y(ind);z = z(ind);

[xb,yb]=DrawBoundary(x,y,z);% 画边界

if isempty(xb),return;end

[X,Y]=meshgrid(linspace(min(x),max(x),100),linspace(min(y),max(y),100));

[X,Y,Z]=griddata(x,y,z,X,Y,'v4');

in = inpolygon(X,Y,xb,yb);% 此处可自定义多边形边界(各个拐角坐标(xb,yb),逆时针排列)

Z(~in)=nan;

figure('Color','w');

contourf(X,Y,Z,'LineStyle','none');

axis equal;

colormap jet

colorbar

% ---------------------------------------------------------------------------

function [xb,yb]=DrawBoundary(x,y,z)% 画边界多边形

xb=[];yb=[]; % 边界多边形拐角点

figure('NumberTitle','off','Name','请画出边界多边形','Color','White')

title('请{\color{red}逆时针}画出边界多边形的拐角点(左键画点,右键取消),画完后关闭界面')

set(gca,'Clipping','off','SortMethod','childorder')

%         set(gcf,'Pointer','cross') % 十字鼠标指针

hold on

scatter(x,y,2,z,'s','filled')% 数据散点图

hb=plot(nan,nan,'+-k','LineWidth',1,'MarkerSize',5);% 边界线

pbaspect([1.25 1 1]);

daspect([1 1 1]);

axis manual off

xylim=axis;

set(gcf,'WindowButtonUpFcn',@wbuf)

function wbuf(src,cbd)

switch get(gcf,'SelectionType')

case 'normal'% 左键,添加当前点(要逆时针画)

cp=get(gca,'CurrentPoint');

xb(end+1)=cp(1);

yb(end+1)=cp(3);

case 'alt'% 右键,删除最后一个点

if ~isempty(xb)

xb(end)=[];yb(end)=[];

end

end

% 多边形(不必把最后一个点和第一个点重合起来)

set(hb,'XData',xb,'YData',yb)

end

%         set(gcf,'WindowButtonMotionFcn',@wbmf)

%         function wbmf(src,cbd) % 动态画点

%             cp=get(gca,'CurrentPoint');

%             set(hb,'XData',[xb,cp(1)],'YData',[yb,cp(3)])

%         end

set(gcf,'WindowScrollWheelFcn',@wswf)

function wswf(src,cbd)% 用鼠标滚轮缩放局部图像

cp=get(gca,'CurrentPoint');

if cbd.VerticalScrollCount > 0

axis(xylim) % 恢复初始大小/范围

elseif cbd.VerticalScrollCount < 0 % 放大图像(缩小范围)

axis(0.85*(axis-cp([1,1,3,3]))+cp([1,1,3,3]))

end

end

waitfor(gcf)% 等待关闭界面,之后继续执行

if numel(xb)>=3% 至少三个点

xb=xb([1:end,1]);yb=yb([1:end,1]); % 闭合边界

fprintf('边界点:\n');disp([xb(:),yb(:)]);% 显示边界点

else

xb=[];yb=[];

warndlg('至少3个点!')

end

end

end

Matlab中,使用contourf函数可以绘制等高线填充图。该函数的语法为contourf(X, Y, Z, N),其中X和Y是表示网格的两个向量,Z是对应于网格点的高度值,N是指定等高线的数量。\[1\]可以使用该函数绘制初始等高线填充图,并通过设置'LineWidth'参数来调整等高线的线宽。同时,可以使用title、xlabel和ylabel函数来添加标题和坐标轴标签。\[1\] 如果你想使用Matlab论文插图绘制模板系列来绘制等高线图,可以按照模板格式添加相应内容,以满足期刊和学位论文的格式要求。这个模板旨在降低使用Matlab进行科研绘图的门槛,使得绘图更加简便。如果你觉得有用,也可以分享给你的朋友。\[2\] 作为一个例子,你可以使用linspace函数生成一组x和y的值,然后使用meshgrid函数将它们转换为网格坐标。接下来,可以根据需要定义一个高度函数Z,例如sin(X) + cos(Y)。最后,使用contourf函数绘制10个层级的等高线填充图。\[3\] #### 引用[.reference_title] - *1* *2* [Matlab论文插图绘制模板第33期—等高线填充图(contourf)](https://blog.csdn.net/qq_26447137/article/details/125078604)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MATLAB绘图合集:填充二维等高线图contourf](https://blog.csdn.net/YINTENAXIONGNAIER/article/details/127999580)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值