matlab第二讲矩阵的输入与生成.docx

上传人:b****6 文档编号:6669166 上传时间:2023-01-08 格式:DOCX 页数:18 大小:33.97KB
下载 相关 举报
matlab第二讲矩阵的输入与生成.docx_第1页
第1页 / 共18页
matlab第二讲矩阵的输入与生成.docx_第2页
第2页 / 共18页
matlab第二讲矩阵的输入与生成.docx_第3页
第3页 / 共18页
matlab第二讲矩阵的输入与生成.docx_第4页
第4页 / 共18页
matlab第二讲矩阵的输入与生成.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

matlab第二讲矩阵的输入与生成.docx

《matlab第二讲矩阵的输入与生成.docx》由会员分享,可在线阅读,更多相关《matlab第二讲矩阵的输入与生成.docx(18页珍藏版)》请在冰豆网上搜索。

matlab第二讲矩阵的输入与生成.docx

matlab第二讲矩阵的输入与生成

第二讲矩阵的输入与生成

2.1矩阵的创建

2.2数组的生成

2.3数组的应用—矩阵的裁剪

2.4矩阵的生成

2.1矩阵的创建

1、直接输入

例1:

>>a=[123;456]

a=

123

456

注:

1.必须使用方括号将所有元素括起来;

2.行与行之间用分号或回车符分隔;

3.同行元素用空格或逗号分隔;

4.该方法只适合创建小型矩阵。

2、通过函数创建矩阵

对于一些特殊矩阵,可利用Matlab的函数运算创建。

例2:

x=[0,pi/6,pi/3;pi/2,2*pi/3,5*pi/6];

>>y=sin(x)

y=

00.50000.8660

1.00000.86600.5000

3、导入数据创建矩阵

通过其他途径得到的数据(例如实验中测得的数据)可以使用数据导入向导(ImportWizard)调入Matlab的工作空间。

(load,xlaread都是导入数据的命令)

2.2数组的生成

Matlab中的数组在外观上与矩阵毫无差别,也就是说矩阵的输入方法可以直接移植到数组的输入上。

同样,下述关于数组的生成方法也可以用来生成矩阵。

Matlab中数组与矩阵的差别完全在于运算规则上。

1、i:

j:

k

创建从i开始,步长为j,到k结束的数字序列,即i,i+j,i+2j,…,k。

数字i、j和k不必是整数,该序列的最后一个数是小于或等于k。

如果j=1,则可简写为i:

k。

如果j=0,则返回一个空矩阵。

如果j>0且k

如果j<0且k>i,则返回一个空矩阵。

例3:

>>2:

5

ans=

2345

>>2.1:

1.1:

5.3

ans=

2.10003.20004.3000

>>1:

-1:

-4

ans=

10-1-2-3-4

>>1:

-1:

4

ans=

Emptymatrix:

1-by-0

2、linspace(a,b,n)

在区间[a,b]上创建一个有n个元素的向量,这n个数把整个区间线性分隔,即把区间[a,b]等分为n-1个小区间,取其n个节点。

n=100时可简写为linspace(a,b)。

这个命令和冒号表示形式相近,但是它直接定义了数据的个数。

例3:

>>a=linspace(0,6,6)

a=

01.20002.40003.60004.80006.0000

注:

以上关于数组生成的命令经常用于作图,如:

x=linspace(0,pi);%生成数组

y=sin(x);%计算函数

plot(x,y);%作图

2.3数组的应用—矩阵的裁剪

A(行数组,列数组)

取出矩阵A中‘行数组’指定的行,‘列数组’指定的列元素按原次序排列组成的矩阵。

具体用法如下:

A(i,j)返回矩阵A中下(i,j)的元素值。

A(:

j)返回矩阵A中第j列列向量。

A(i,:

)返回矩阵A中第i行行向量。

A(:

j:

k)返回由矩阵A中的第j列,第j+1列,直到第k列列向量组成的子阵。

A(i:

k,:

)返回由矩阵A中的第i行,第i+1行,直到第k行行向量组成的子阵。

A(i:

k,j:

l)返回由矩阵A中的第i行到第k行行向量和第j列到第l列列向量组成的子阵。

A(:

[j1j2…])返回矩阵A的第j1列、第j2列等的列向量。

A([i1i2…],:

)返回矩阵A的第i1行、第i2行等的行向量。

A([i1i2...],[j1j2...])返回矩阵第i1行、第i2行等和第j1列、第j2列等的元素。

例4:

>>A=magic(5)

A=17241815

23571416

46132022

101219213

11182529

>>A(2,3)

ans=7

>>A(2,:

ans=23571416

>>A(:

3)

ans=1

7

13

19

25

>>A(1:

3,:

ans=17241815

23571416

46132022

>>A(:

3:

5)

ans=1815

71416

132022

19213

2529

>>A(1:

3,3:

5)

ans=1815

71416

132022

>>A([24],:

ans=23571416

101219213

>>A(:

[24])

ans=248

514

620

1221

182

>>A([135],[24])

ans=248

620

182

A(:

)将矩阵A中的每列合并成一个长的列向量。

A(j:

k)返回一个行向量,其中的元素为A(:

)中的从第j个元素到第k个元素。

A([j1j2…])返回一个行向量,其中的元素为A(:

)中的第j1、j2…元素。

例5:

>>A=magic(3)

A=816

357

492

>>A(:

ans=8

3

4

1

5

9

6

7

2

>>A(2:

5)

ans=3415

>>A([13579])

ans=84562

2.4矩阵的生成

ones(n)建立一个nxn的1矩阵。

ones(m,n)建立一个mxn的1矩阵。

ones(size(A))建立一个和矩阵A同样大小的1矩阵。

例6:

>>a=ones(3,4)

a=

1111

1111

1111

zeros(n)建立一个nxn的0矩阵。

zeros(m,n)建立一个mxn的0矩阵。

zeros(size(A))建立一个和矩阵A同样大小的0矩阵。

例7:

>>a=zeros(3)

a=

000

000

000

eye(n)建立一个nxn的单位矩阵。

注意eye命令只能用来建立二维矩阵。

eye(m,n)建立一个mxn的单位矩阵。

注意eye命令只能用来建立二维矩阵。

eye(size(A))建立一个和矩阵A同样大小的单位矩阵。

例8:

>>a=eye(3)

a=

100

010

001

>>b=eye(3,4)

b=

1000

0100

0010

>>b=eye(4,3)

b=

100

010

001

000

rand产生在0~1之间均匀分布的随机数;每调用一次给一个新的数值。

rand(n)产生一个nxn的矩阵,其元素为0~1之间均匀分布随机数。

rand(m,n)产生一个mxn的矩阵,其元素是0~1之间均匀分布的随机数。

例9:

>>rand(3)

ans=

0.45650.44470.9218

0.01850.61540.7382

0.82140.79190.1763

randn产生零均值、单位方差的正态分布随机数。

randn(n)产生一个n×n的矩阵,其元素为零均值、单位方差的正态分布随机数。

randn(m,n)产生一个m×n的矩阵,其元素为零均值、单位方差的正态分布随机数。

例10:

>>randn(3,5)

ans=

-0.43260.28771.18920.1746-0.5883

-1.6656-1.1465-0.0376-0.18672.1832

0.12531.19090.32730.7258-0.1364

diag(A)生成一个由矩阵A主对角线元素组成的列向量。

主对角线总是从矩阵左上角开始。

对于方阵来说它结束于矩阵的右下角。

diag(x)生成一个n维的方阵,它的主对角线元素值取自向量x,其余元素的值都为0。

diag(A,k)生成一个由矩阵A第k条对角线的元素组成的列向量。

k=0为主对角线;k<0为下第k对角线;k>0为上第k对角线。

diag(x,k)生成一个(n+abs(k))维的方阵,该矩阵的第k条对角线元素取自向量x,其余元素都为零。

例11:

>>A=magic(4)

A=162313

511108

97612

414151

>>a=diag(A)

a=16

11

6

1

>>B=diag(a)

B=

16000

01100

0060

0001

>>b=diag(A,1)

b=2

10

12

>>C=diag(b,-1)

C=

0000

2000

01000

00120

triu(A)生成一个和A大小相同的上三角矩阵。

该矩阵的主对角线及以上元素取自A中相应元素,其余元素都为零。

triu(A,k)生成一个和A大小相同的上三角矩阵。

该矩阵的第k条对角线及以上元素取自A中相应元素,其余元素都为零。

命令triu(A,0)等同于命令triu(A)。

tril(A)生成一个和A大小相同的下三角矩阵。

该矩阵的主对角线及以下元素取自A中相应元素,其余元素都为零。

tril(A,k)生成一个和A大小相同的下三角矩阵。

该矩阵的第k条对角线及以下元素取自A中相应元素,负数k表示主对角线下的对角线。

其余元素都为零。

命令tril(A,0)等同于命令tril(A)。

例12:

>>A=magic(5)

A=

17241815

23571416

46132022

101219213

11182529

>>triu(A)

ans=17241815

0571416

00132022

000213

00009

>>tril(A,-1)

ans=

00000

230000

46000

10121900

11182520

fliplr(A)通过二维矩阵A的行元素按照B(i,j)=A(j,n-j+1)交换位置生成一个新矩阵。

这里的‘lr’是‘left-right’的缩写。

flipud(A)通过二维矩阵A的列元素按照B(i,j)=A(n-i+1,j)交换位置生成一个新矩阵。

这里的‘ud’是‘up-down’的缩写。

例13:

>>A=magic(3)

A=

816

357

492

>>fliplr(A)

ans=618

753

294

>>flipud(A)

ans=492

357

816

rot90(A)生成一个由矩阵A逆时针旋转90°而得的新阵。

rot90(A,k)生成一个由矩阵A逆时针旋转k×90°而得到的新阵。

例14:

>>A=magic(3)

A=

816

357

492

>>rot90(A)

ans=

672

159

834

hilb(n)生成一个n×n的希尔伯特矩阵。

例15:

>>formatrat

>>hilb(4)

ans=

11/21/31/4

1/21/31/41/5

1/31/41/51/6

1/41/51/61/7

invhilb(n)生成一个n×n的希尔伯特矩阵的逆矩阵,其元素都为整数。

例16:

>>invhilb(4)

ans=

16-120240-140

-1201200-27001680

240-27006480-4200

-1401680-42002800

>>invhilb(4)*hilb(4)

ans=

1.0000000

01.000000

001.00000

00-0.00001.0000

magic(n)给出一个n×n的魔方矩阵。

(行和,列和,两条对角线和相等)

例17:

>>magic(4)

ans=

162313

511108

97612

414151

pascal(n)返回一个n×n的Pascal矩阵,它是对称、正定的矩阵,它的元素由Pascal三角(杨辉三角)组成。

它的逆矩阵的所有元素是整数。

例18:

>>pascal(4)

ans=

1111

1234

13610

141020

练习直接输入生成矩阵

取矩阵

的第1、3行元素生成矩阵

将矩阵

按列合成一个列向量。

为首项,

为步长,

为末项生成向量

计算向量

的正弦值,赋值到变量

以向量

为对角线生成对角矩阵

生成一个5阶希尔伯特矩阵

取矩阵

的第1、3、5行,第2到4列元素生成矩阵

左右翻转矩阵

得矩阵

对矩阵

逆时针旋转90度得矩阵

取矩阵

的主对角线向量

以向量

为第-3对角线生成对角矩阵

(矩阵

得阶数是多少?

)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1