网站后台 源码,鹤壁百度网站建设,企业电商网站备案流程,合肥建设企业网站问题#xff1a;如何将 1*n 的矩阵转换为指定 M*N 的矩阵#xff0c;或者将 M*N 的矩阵转换为 1*n 的矩阵#xff1f;
处理方法#xff1a;使用 reshape 函数进行矩阵的行列互换
分两种情况如下#xff1a;
一、将 1*n 的矩阵转换为指定 M*N 的矩阵
假如有4个坐标值如何将 1*n 的矩阵转换为指定 M*N 的矩阵或者将 M*N 的矩阵转换为 1*n 的矩阵
处理方法使用 reshape 函数进行矩阵的行列互换
分两种情况如下
一、将 1*n 的矩阵转换为指定 M*N 的矩阵
假如有4个坐标值
% 4 个坐标数据
x1 [100,202,566];
x2 [125,160,488];
x3 [251,264,945];
x4 [457,485,584];
Pos [x1,x2,x3,x4];
将其转为 4*3 的矩阵
M 4; % 代表行数
N 3; % 代表列数
Poss reshape(Pos,[M N]);%{ 其结果为Poss [100 160 945202 488 457566 251 485125 264 584]
%}很明显结果并不是我们想要的这是由于 reshape 函数是按列进行排序的所以我们在转换的时候要将行数设为 3列数为坐标点的个数 (即 4)然后将转换后的取转置即可得到我们想要的格式具体如下所示
M 3; % 代表行数即三维坐标
N 4; % 代表列数即几个坐标点
POs reshape(Pos,[M N]); % 转换后的坐标%{ 其结果为POs [100 202 566;125 160 488;251 264 945;457 485 584];
%}可以看到结果是对的。
二、将 M*N 的矩阵转换为 1*n 的矩阵
同样使用 reshape 函数不同的是维度的选取如下所示
POs [100,202,566;125,160,488;251,264,945;457,485,584];
M 1; % 行数
N 12 % 列数也可写成 []系统会自动计算列数
POS reshape(POs,M,[]);% 结果为POS [100 125 251 457 202 160 264 485 566 488 945 584];% 很明显结果不对我们需要将 POs 取转置后再进行转换即POS reshape(POs,M,[]); % 此时结果正确% 结果为POS [100 202 566 125 160 488 251 264 945 457 485 584]% 和初始 Pos 结果一致
完整矩阵行列互换如下
close all; clear all; clc;% 4 个坐标数据x1 [100,202,566];
x2 [125,160,488];
x3 [251,264,945];
x4 [457,485,584];
Pos [x1,x2,x3,x4]; % 即Pos [100,202,566,125,160,488,251,264,945,457,485,584];% 设置行列数M1 3; % 代表行数即三维坐标
N1 4; % 代表列数即几个坐标点
POs reshape(Pos,[M1 N1]);%{ 其结果为POs [100 202 566;125 160 488;251 264 945;457 485 584];
%}M2 1; % 代表行数
N2 []; % 代表列数也可用列数值代替
POS reshape(POs,M2,N2);% 结果为POS [100 202 566 125 160 488 251 264 945 457 485 584]% 和初始 Pos 结果一致
仅供参考。