矩阵的运算

以矩阵某一列的数值大小做排序依据

Matlab中对二维数组排序
在Matlab中常有对二维数组按照某列数值大小进行行排序的需求,sortrows函数可以实现这个功能
在这里插入图片描述

sortrows(A):对数组A按照第一列(默认)数值大小进行行排序

[1 2 3;
3 3 4;
2 4 5]

排序后:

[1 2 3;
2 4 5;
3 3 4]

同一行的每列数值保持不变。关于sortrows函数更多用法参考matlab helps.
要注意的是,一定要接住sortrows函数的返回值

    rcd;
  sortrows(rcd);% 按第一列排序
    rcd  %这样rcd数组是不会发生改变的

应该

rcd=sortrows(rcd);% 按第一列排序

矩阵加一行 (分号)

A=[1 2 3;4 5 6;7 8 9];
row=[0 0 0];
A_row=[A;row];
display(A_row);


矩阵加一列 (空格)

A=[1 2 3;4 5 6;7 8 9];
column=[0;0;0];  %一共三行,用“;”分开
A_column=[A column];
display(A_column);

矩阵第i列加上一列的值

tmp是n*1 的列向量

%  for q=1:n
%      u(q,i)=tmp(q);
%  end

 u(:,i)=u(:,i)+tmp;

以下三种做法都不恰当(第三种没错)
u=u+tmp %u的每一列都会加上tmp列向量

%  u=[u tmp]; 
%本来想不先定义u的列数,每算出一个时域的一列就给u多加一列,但是代码中访问了u(j,i-1),虽然没有数组越界,由于u的列数暂时不够,还是会报错
若要访问u(j,i)算出一列加上一列不好,应该为该列加上算出的值
% u=u+tmp %u的每一列都会加上tmp列向量
% u(:,2)=tmp %可以加上,但是不加分号自动输出的是整个u,不方便观测tmp的值

可测试如下样例

u=ones(4)
tmp=2*ones(4,1)
%  u=[u tmp]
 u=u+tmp %u的每一列都会加上tmp列向量
 u(:,2)=tmp %可以加上,但是不加分号自动输出的是整个u,不方便观测tmp的值

删除一列

u(:,i)=[]

A=[1,2,3;4,5,6;7,8,9]

A =

1 2 3

4 5 6

7 8 9

删除行:A(2,:)=[]

A =

1 2 3

7 8 9

删除列:

A(:,2)=[]

A =

1 3

7 9

diag 创建对角矩阵或获取矩阵的对角元素

语法
D = diag(v)

D = diag(v,k)

x = diag(A)

x = diag(A,k)

说明
D = diag(v) 返回包含主对角线上向量 v 的元素的对角矩阵。

D = diag(v,k) 将向量 v 的元素放置在第 k 条对角线上。k=0 表示主对角线,k>0 位于主对角线上方,k<0 位于主对角线下方。

x = diag(A) 返回 A 的主对角线元素的列向量。

x = diag(A,k) 返回 A 的第 k 条对角线上元素的列向量。
diag例子
diag用于创建矩阵很好

clc,clear
x=[1 1 1 1]
ones(1,length(x)-1)
A=-2*eye(4)+diag(ones(1,length(x)-1),1)+diag(3*ones(1,length(x)-1),-1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值