matlab怎么写不规则二维平面

一个程序 知道一个截面的坐标 及对应坐标点的一个物理量
怎么把这些坐标点画成网格并且用这个物理量染色(目的)

img

这个是截面(截面不规整)

img

这个是数据格式 (我不知道怎么上传excel)

参考GPT的回答和自己的思路,以下是读取Excel数据并绘制不规则二维平面的Matlab代码:

% 读取数据
data = xlsread('filename.xlsx'); % 读取Excel文件中的数据
x = data(:,1); % 截面的x坐标
y = data(:,2); % 截面的y坐标
z = data(:,3); % 物理量

% 绘制网格
tri = delaunay(x,y); % 生成三角剖分
trisurf(tri, x, y, z); % 绘制三角网格并用z值染色

% 美化图形
axis equal; % 使x,y轴等比例
view(2); % 使视角正对平面
colorbar; % 添加色标

其中,需要将filename.xlsx替换为你实际的Excel文件名。绘制出来的图形会根据z值的大小自动进行染色。
回答不易,还请采纳!!!

“Devil组”引证GPT后的撰写:

% 读取数据文件
data = load('filename.txt');

% 提取坐标和物理量信息
x = data(:, 1); % x坐标
y = data(:, 2); % y坐标
z = data(:, 3); % 物理量

% 绘制网格
[X, Y] = meshgrid(unique(x), unique(y)); % 构建网格
Z = griddata(x, y, z, X, Y); % 对物理量进行插值
surf(X, Y, zeros(size(X)), Z); % 绘制网格并进行染色

% 设置绘图参数
shading interp; % 使用插值的颜色进行染色
colormap jet; % 使用jet色图进行染色
view(2); % 以2D视图展示网格
axis equal; % 保持坐标轴的比例一致


可以私信吧数据格式发我测试

参考GPT和自己的思路:下面是一个示例代码,实现了读取 Excel 表格中的数据并绘制散点图:

% 读取 Excel 表格中的数据
data = readtable('filename.xlsx', 'Range', 'A1:C100');

% 获取 XYZ 数据
x = data{:, 'X'};
y = data{:, 'Y'};
z = data{:, 'PhysicalQuantity'};

% 绘制散点图并使用 z 值进行染色
scatter(x, y, [], z, 'filled');
colorbar;  % 显示颜色条

你可以将 filename.xlsx 替换为你实际使用的 Excel 文件名,Range 参数也需要根据你的数据表格范围进行设置。在绘制散点图时,我们使用 scatter 函数,并使用 [] 参数表示不绘制散点的大小,而是使用 z 值进行染色。最后使用 colorbar 函数显示颜色条。

matlab中绘制不规则平面可以使用patch函数实现吧,patch 的一般调用格式为patch(X,Y,C)(二维)和patch(X,Y,Z,C)(三维)。其中X和Y、Z就是平面的定点坐标,C表示颜色,比如你这里的就是blue蓝色。如果你要实现绘制这个不规则的平面的话,那就需要使用patch 按照一定的顺序将这个平面的几个定点连接起来即可。
比如,可以实现以下效果:

img


【图片来源于帮助文档:https://ww2.mathworks.cn/help/matlab/ref/patch.html
你可以看下patch函数的知识,来实现你的效果

该回答引用GPTᴼᴾᴱᴺᴬᴵ
可以使用MATLAB中的trimesh函数实现将不规则二维平面绘制成网格,并使用物理量来染色。

具体实现步骤如下:

  1. 根据给定的截面坐标点建立三角形网格,可以使用MATLAB中的DelaunayTri函数进行三角剖分。
  2. 通过给定坐标点对应的物理量,建立每个三角形的物理量值,这里可以使用重心法或者插值法计算。
  3. 使用trimesh函数将建立的三角形网格绘制出来,并使用FaceVertexCData属性将物理量值映射为颜色进行染色。

示例代码如下:

% 假设坐标点为一个nx2的矩阵,对应物理量值为一个nx1的向量
points = [x1, y1; x2, y2; ...; xn, yn];
values = [val1; val2; ...; valn];

% 利用三角剖分建立三角形网格
tri = DelaunayTri(points);

% 计算每个三角形的物理量平均值
triVals = zeros(size(tri.Triangulation, 1), 1);
for i = 1:size(tri.Triangulation, 1)
    triVals(i) = mean(values(tri.Triangulation(i, :)));
end

% 绘制三角形网格,并将物理量映射为颜色进行染色
figure;
trimesh(tri, points(:, 1), points(:, 2), zeros(size(points, 1), 1), ...
    'FaceVertexCData', triVals, 'FaceColor', 'interp');
xlabel('x');
ylabel('y');
colorbar;


其中,trimesh函数的第一个参数为建立的三角形网格,第二个和第三个参数分别为每个坐标点的x、y坐标,第四个参数为每个坐标点的z坐标,这里设置为0,表示所有点在同一平面上。FaceVertexCData属性为每个三角形的颜色值,这里使用triVals数组表示。FaceColor属性为绘制颜色的方式,这里设置为'interp'表示使用颜色插值的方式进行着色。

能否给一下 你的数据

可以使用 MATLAB 的 TriScatteredInterp 函数对给定的截面坐标进行插值,生成一个二维网格,并使用 scatter 或 plot 函数绘制出这些坐标点。要用物理量对这些坐标点染色,可以使用 colormap 函数进行配色。以下是一个可能的示例代码:

% 读取截面坐标和物理量数据
data = load('data.txt'); % 假设数据存储在名为 data.txt 的文件中
x = data(:, 1); % 截面横坐标
y = data(:, 2); % 截面纵坐标
z = data(:, 3); % 物理量

% 对坐标进行插值,生成二维网格
tri = delaunayTriangulation(x, y);
F = TriScatteredInterp(tri, z);
[X, Y] = meshgrid(min(x):0.1:max(x), min(y):0.1:max(y));
Z = F(X, Y);

% 绘制坐标点和染色
scatter(x, y, [], z, 'filled');
colormap jet;
colorbar;

% 绘制二维网格
hold on;
contourf(X, Y, Z, 20, 'LineColor', 'none');

在这个示例代码中,我们首先读取截面坐标和物理量数据,然后使用 delaunayTriangulation 函数生成三角剖分,再使用 TriScatteredInterp 函数对坐标进行插值,生成二维网格。接着,我们使用 scatter 函数绘制出这些坐标点,并用 colormap 函数对它们进行染色。最后,我们使用 contourf 函数绘制二维网格,并使用 hold on 函数保持画布,使二维网格和坐标点可以同时显示在同一个图形窗口中。