问下MATLAB如何对一个矩阵还原 比如[Y,I] = sort(X,1)排完序根据Y和I 怎么还原
>> A=[8 5 7 3 9 1 7];
>> [a i]=sort(A)
a =
1 3 5 7 7 8 9
i =
6 4 2 3 7 1 5
>>
如上所示,a表示A经过升序排列之后的矩阵,i表示a中每个元素在原来矩阵A中的位置。
sort()函数是排序函数。
sort函数是Matlab内置的排序函数,可以满足常用的排序需求。sort函数的基本形式如下:
[Y,I] = sort(X,DIM,MODE)其中:
Y表示对X排序后的结果
I 表示Y中对应元素原来在X中的下标
mode的默认值是‘ascend’升序排列,‘descend’为降序排列
DIM的默认值是1,如果X是矩阵,则默认对矩阵的各个列进行升序排列,即sort(X,1)与sort(X)等效(矩阵在matlab中是按列存储的)
sort(X,2)表示对矩阵的各行中的元素按照升序排列
如果X是行向量,则Y与I也是行向量;如果X是列向量,则Y与I也是列向量,如果X是矩阵,则Y与I是与X维数相同的矩阵。
由于在排序的时候保留了数据在原数组的下标信息,所以排序是可逆的。如果[Y,I] = sort(X,DIM,MODE)X是排序前的向量,Y是排序后的向量,I是下标的索引,则X=Y(I),可以还原原来的向量。
MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
Y(II)就可以还原到X
如:
X=rand(10,1);
[Y,I] = sort(X);
[It,II]=sort(I);
Y(II)-X
当然对于矩阵也是一样的,但是比较麻烦
X=rand(5,6);
[Y,I] = sort(X,1);
[It,II]=sort(I,1);
Y(II+repmat((0:size(X,2)-1)*size(X,1),size(X,1),1))-X
%要构造一个矩阵的角标偏移,比较麻烦,当然可能我走弯路了。
问下MATLAB如何对一个矩阵还原 比如[Y,I] = sort(X,1)排完序根据Y和I...
[It,II]=sort(I);Y(II)就可以还原到X 如:X=rand(10,1);[Y,I] = sort(X);[It,II]=sort(I);Y(II)-X 当然对于矩阵也是一样的,但是比较麻烦 X=rand(5,6);[Y,I] = sort(X,1);[It,II]=sort(I,1);Y(II+repmat((0:size(X,2)-1)*size(X,1),size(X,1),1))-X...
matlab中怎样将矩阵归一化处理?
当你有一个矩阵A,例如A=[3 4; 5 12],首先获取其行数和列数,如[m, n] = size(A)。接下来,对于矩阵的每一行,通过除以该行的范数(即行向量的L2范数),将其转换为单位向量。代码如下:matlabfor i = 1:m A(i,:) = A(i,:) \/ norm(A(i,:));end按列归一化:如果希望对...
MATLAB中如何恢复原矩阵
第一问:B1.^2=(A.^(0.5)).^2=A,B2^2=(A^(0.5))2=A,这样就把A还原了;第二问:B1.^(2)-B2=A^(0.5),但这个方法存在一个问题,就是结果不一定会等于[0 0 0 0],因此在计算的时候最好采用sym命令计算,比如下面的:A=sym(magic(3));B=inv(A),pretty(B),latex(B)先答这...
MATLAB中如何做整个矩阵数据的回归
这样得到一组回归数据 让 y=c(1)*x1+c(2)*x2+c(3)如果每一列都要得到一个回归结果,那么就要用循环了
...如何根据这些距离,利用MATLAB还原出图像本来的面貌
个人意见:首先根据要求取好第1,2两点的坐标,然后通过分别以1,2作距离1,3;2,3;为半径的球,交点即为第3点,然后用2,3,求出4,以此类推。最后根据所求出的坐标画出曲线。
matlab 对原矩阵的每一列进行归一化
举个例子,希望有所帮助。 代码 % By lyqmath clc; clear all; close all; A = magic(5) for i = 1 : size(A, 2) temp = A(:, i); temp = (temp-min(temp))\/(max(temp)-min(temp)); A(:, i) = temp; end A 结果 A = 17 24 1 8 15 23 5 7 14 16 4 6 13 ...
matlab删除一个矩阵
方法一:通过空矩阵转换删除第一步在我们的电脑上打开matlab的命令行窗口,输入“A=[ 1 2 3;4 5 6;7 8 9]”,按回车键,如下图所示:第二步我们输入“B=A;B(:,[1])=[];B”代码,这是删除A矩阵的第一列,如下图所示:第三步按回车键之后,可以看到第一列被删除了,并得到了新矩阵B...
MATLAB矩阵归一化
clear;clc X=[10 1 0.1 0.02 3;5 1.5 0.5 0.02 2.5;2 2 0.75 0.05 2.5;2 2 1 0.05 2]a=1.\/(sum(X.^2))X.*[a;a;a;a]X = 10.0000 1.0000 0.1000 0.0200 3.0000 5.0000 1.5000 0.5000 0.0200 2.5000 2.0000 2.0000 ...
matlab如何拼接矩阵
1、首先在我们的电脑上打开matlab,在命令行窗口中输入a=[1,2,3;4,5,6];b=[7,8,9],按回车键,生成两个同列不同行的矩阵。2、对于同列不同行的两个矩阵,我们可以通过c=[a;b],进行拼接矩阵,分号是纵向拼接矩阵。3、我们在命令行窗口中输入a=[1,2,3;4,5,6];d=[1;10],按回车...
如何用matlab实现矩阵的列归一化?
最简单的办法,把元素直接映射到(0,1)区间:A=[1,3,5,1\/3,2,4];A1=A.\/sum(A);将矩阵按列归一化的函数 function [Array_dst]=normalize(Array_src,ymin,ymax)[l,r]=size(Array_src);Bound=[];for i=1:r Bound(1,i)=min(Array_src(:,i)); Bound(2,i)=max(Array_sr...