You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中绘制ℝ²→ℝ²函数的变换网格图像?

在MATLAB中绘制ℝ²→ℝ²变换的网格并关联原像

完全可以在MATLAB中实现这类变换网格的绘制,同时支持通过标记点、配色等方式关联原像坐标。以下是具体实现方案:

1. 基础实现:生成变换后的网格

核心思路是先生成规则的原网格,再通过自定义变换函数计算每个网格点的新坐标,最后绘制变换后的网格线。

% 1. 生成原网格点
x = linspace(-2, 2, 10); % x轴等分网格点
y = linspace(-2, 2, 10); % y轴等分网格点
[X, Y] = meshgrid(x, y);

% 2. 定义ℝ²→ℝ²变换函数(示例为剪切+缩放变换)
% 可替换为任意自定义变换,比如极坐标变换、旋转变换等
U = X + 0.6*Y; % 变换后的u坐标
V = 0.4*X + Y; % 变换后的v坐标

% 3. 绘制变换后的网格
figure; hold on; axis equal; axis([-3 3 -3 3]);

% 绘制横向网格线(固定原y值的行)
for i = 1:length(y)
    plot(U(i,:), V(i,:), 'k-', 'LineWidth', 1);
end

% 绘制纵向网格线(固定原x值的列)
for j = 1:length(x)
    plot(U(:,j), V(:,j), 'k-', 'LineWidth', 1);
end

2. 关联原像:标记关键点

通过标记原网格的特定点(如顶点、中心),并标注原坐标,直观展示原像与变换后点的对应关系:

% 标记原网格的四个顶点及中心
key_x = [-2, 2, -2, 2, 0];
key_y = [-2, -2, 2, 2, 0];
[key_X, key_Y] = meshgrid(key_x, key_y);
key_U = key_X + 0.6*key_Y;
key_V = 0.4*key_X + key_Y;

% 绘制标记点并添加原坐标标注
scatter(key_U(:), key_V(:), 60, 'r', 'filled', 'MarkerEdgeColor', 'k');
for k = 1:length(key_U(:))
    text(key_U(k)+0.15, key_V(k)+0.15, ...
        sprintf('(%.1f,%.1f)', key_X(k), key_Y(k)), 'FontSize', 9);
end

3. 按原像坐标配色

利用原网格的x/y坐标作为颜色映射依据,让变换后的网格/点直接体现原像信息:

方案1:网格线按原坐标配色

figure; hold on; axis equal; axis([-3 3 -3 3]);
cmap = jet(length(y)); % 生成与原y值数量匹配的色卡

% 横向网格线按原y值配色
for i = 1:length(y)
    plot(U(i,:), V(i,:), 'LineWidth', 1.5, 'Color', cmap(i,:));
end

% 纵向网格线按原x值配色
for j = 1:length(x)
    plot(U(:,j), V(:,j), 'LineWidth', 1.5, 'Color', cmap(j,:));
end

colorbar;
ylabel('原坐标值');
title('按原坐标配色的变换网格');

方案2:变换点按原坐标配色

figure; hold on; axis equal; axis([-3 3 -3 3]);

% 按原x坐标为变换点配色
C = reshape(X, [], 1);
scatter(U(:), V(:), 30, C, 'filled');

colormap(jet);
colorbar;
xlabel('变换后u坐标');
ylabel('变换后v坐标');
title('按原x坐标配色的变换点');

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:27:42