【代码】矩阵的线性映射(平面转换)

相同x、y坐标下,改变z坐标

如下图所示,希望将原矩阵由上面的平面转换到下面的平面

已知上面平面所有点的三维坐标和下面平面的角点(四个顶点)的三维坐标

代码:

matlab 复制代码
function main()
%矩阵线性变换,相同x、y,仅z坐标不同的两个平面相互转换
clc
clear
close all
%% 0.原始数据、目标数据
x=[1,2,3,4,5];
y=[1,2,3]*10;
%原始数据
res_ori=[1,2,3,4,5;
    2,3,4,5,6;
    3,4,5,6,7];
%目标数据
% res_tar=[5,4,3,2,1;
%     6,5,4,3,2;
%     7,6,5,4,3]*-1;

%% 1.目标数据的角点
r11=-5;
r12=-1;
r21=-7;
r22=-3;
mat_tar_cor=[r11,r12;r21,r22];%目标矩阵(平面)的四个角点
%% 2.目标数据
results=trans_func(res_ori,mat_tar_cor);

%% 3.画图
[X,Y]=meshgrid(x,y); 
mesh(X,Y,res_ori)
hold on
mesh(X,Y,results)

trans_func.m

matlab 复制代码
function results=trans_func(mat_ori,mat_tar)
%线性映射
rrr=mat_ori;
qwe=mat_tar;
q1=length(rrr(1,:));%列数
q2=length(rrr(:,1));%行数
for i=1:q1
    qweqwe(1,i)=(qwe(1,2)-qwe(1,1))/(rrr(1,q1)-rrr(1,1))*(rrr(1,i)-rrr(1,1))+qwe(1,1);
end
for i=1:q1
    qweqwe(q2,i)=(qwe(2,2)-qwe(2,1))/(rrr(1,q1)-rrr(1,1))*(rrr(1,i)-rrr(1,1))+qwe(2,1);
end

for j=1:q1%列
    for i=1:q2%行
        qweqwe(i,j)=(qweqwe(q2,j)-qweqwe(1,j))/(rrr(q2,j)-rrr(1,j))*(rrr(i,j)-rrr(1,j))+qweqwe(1,j);
    end
end
results=qweqwe;
相关推荐
AIVOClaw容剪3 小时前
AI 成片系统搭建如何让矩阵号差异化从「同一脚本 50 个号发」变成「反推提示词每号一版」——5 模块防止同质化被判搬运 · AI 视频智能体平台
人工智能·矩阵·音视频
Sagittarius_A*6 小时前
后量子密码|前置基础 01|PQC 极简数学:模运算、有限域、多项式环、矩阵、范数与小系数噪声
线性代数·信息安全·矩阵·密码学·量子计算·pqc·后量子密码
hold?fish:palm1 天前
18 矩阵置0
线性代数·算法·矩阵
hold?fish:palm1 天前
19 螺旋矩阵
线性代数·算法·矩阵
larito1 天前
图形学基础(面试版)
线性代数·矩阵
青象矩阵解码器2 天前
2026年HDMI矩阵供应商实力对决,谁更胜一筹?
矩阵
SNAKEpc121383 天前
OpenGL(十一)- 变换管线
c语言·c++·算法·矩阵·图形渲染
中年阿甘3 天前
解析式布局-二次线长布局
线性代数·算法·矩阵
xier_ran3 天前
【infra之路】W_Q、W_K、W_V矩阵是如何训练出来的
线性代数·矩阵·transformer
乱七八糟的屋子4 天前
MTL4 (Matrix Template Library) 超详细实战教程|C++高性能稠密/稀疏矩阵计算
c++·矩阵·稀疏矩阵·mtl4·matrixtemplate·c++线性代数·高性能数值计算