matlab中sort的函数怎么实现像excel中使一个MXN的矩阵按照第一列排序,然后其他列跟着变化?

如题所述

a=rand(100,100);
tic
[b,pos]=sort(a(:,1));
aa=a(pos,:);
toc

tic
A=sortrows(a,1);
toc
det(aa-A)
前面的算法时间要短,效果是一样的
Elapsed time is 0.000110 seconds.
Elapsed time is 0.000259 seconds.

ans =

0

用个小矩阵检测下
a=magic(5);
tic
[b,pos]=sort(a(:,1));
aa=a(pos,:)
toc

tic
A=sortrows(a,1)
toc
det(aa-A)
a =

17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

aa =

4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
17 24 1 8 15
23 5 7 14 16

Elapsed time is 0.000133 seconds.

A =

4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
17 24 1 8 15
23 5 7 14 16

Elapsed time is 0.000223 seconds.

ans =

0
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-09-26
>> A=[1:4;5:8;2:5]

A =

1 2 3 4
5 6 7 8
2 3 4 5

>> sortrows(A,1)

ans =

1 2 3 4
2 3 4 5
5 6 7 8追问

这个我知道,但计算速度较慢,我需要一个计算速度较快的,望指点

追答

它既然能作为系统内置函数存在,已经能说明它有一定的优势,我们自己编的话能快过他吗,说实话有内置函数还是用内置函数的好

matlab程序中如何在M文件中定义一个m*n级矩阵?
\\x0d\\x0aA = rand(m,n) 就是一个随机数的mXn矩阵\\x0d\\x0a还有很多\\x0d\\x0a如果你想要其他矩阵,可以用这几个函数组合一下。比如我要全部为2.5的矩阵\\x0d\\x0aA = 2.5 * ones(m,n)

我们用aij表示矩阵Amxn的第i行第j列元素,1≤i≤m,1≤j≤n(i、j、m...
排到3行上,每行的数和相等,因此每行的和为45\/3=15 故m=15 2、必须为这九个数中,最中间的数,因为只有这样才能在他两边对称位置上取足够多的数对,使横纵和两个对角线上的和均为15.因此a22=5 3、用matlab生成魔方矩阵(函数为magic(n),n为矩阵阶数),很快便可得到结果,你可以试试~我...

求大神编一个程序 如何在matlab中输入一个有规律的大矩阵? 如图
1、先定义一个MXN的零矩阵;2、用for循环,对E F 这样规律分布的值,进行赋值。就完成了。觉得有帮助就采纳吧。

matlab中zeros函数
1. 当你需要一个nxn的全零矩阵时,可以使用"B = zeros(n)",这将生成一个对角线元素均为0的正方形矩阵。2. 如果你需要一个mxn的矩阵,只需指定两个维度,"B = zeros(m, n)",这样会生成一个m行n列的全零矩阵。3. 对于多维数组,"B = zeros([m n])" 或 "B = zeros(d1, d2,...

MATLAB学习笔记01:1.系统环境、2.数值数据、3.变量、4.矩阵表示、5.矩...
四、MATLAB矩阵的表示 mxn矩阵:m行,n列矩阵 4.1 矩阵的建立 可以直接创建,用矩阵的组合创建,用冒号表达式 和 linspace函数 创建 4.1.1 直接创建:4.1.2 通过已知矩阵创建 和直接建立类似,中括号扩起,先行再列,逗号or空格 + 分号 4.1.3 复数矩阵:可用实部矩阵+虚部矩阵 4.2 冒号表达式...

matlab中如何取一个矩阵的一部分?
matlab中取一个矩阵的一部分方法如下:格式A(m,n),用于提取矩阵A中符合m,n要求的部分 1、提取某个元素,则m,n为数字标量,如A(2,3)为第二行第三列的元素。2、提取某行某列 A(:,n)提取第n列的所有元素,如A(:,3)提取第三列的所有元素;A(m,:)提取第m行的所有元素,如A(3...

matlab中怎么定义一个全零的一维数组
zeros(m,n)生成全零的mxn矩阵 m,n其中一个为1,就是一维数组,看你需要行方向还是列方向

给定一个矩阵A=(aij)mXn, 怎么用matlab命令求另外一个矩阵B,使得B中...
\/ 一点一个除号。这两运算都要求你这个矩阵是个方阵。单引号是转置,矩阵有复数的时候,元素的虚部符号会变,比如会从1+j变成1-j,如果不要变就用.',一点一个单引号,如果是实数矩阵,两个操作结果一样,就是转置。你还有个附加条件,实现起来不难,除完之后bij(bij == inf)=100;...

MATLAB中如何将一个矩阵每一列的最小非零元素变成零?
实现题目所要求功能的MATLAB代码如下:[m n] = size(A); % mxn矩阵i = 1;i_record = [];Ai_record = [];j = 1;while j<=n % 逐列检查while i<=mif A(i,j)~=0i_record = [i_record, i]; % 记录下标Ai_record = [Ai_record, A(i,j)]; % 记录值endi = i+1;...

matlab中 [c,h] = contour(X, Y, Z, [0 0]),X,Y为大小为mx1, nx1...
输出:C——标记矩阵、h——等高线句柄 注:可以通过clabel函数来做标记 另外我按照你的要求,写了一个例子。PS:contour中的[0 0]的使用应该是有问题的。所以在下面的例子中我改了一下。clc;clear all;close all;X=[1,2,3]; %m*1 Y=[1,2,3]; %n*1 Z=[1,2,3;1,2,3;1,2,3]...

相似回答