如何在matlab中建立向量和矩阵

来自:    更新日期:早些时候
MATLAB中如何将循环语句里产生的向量放到矩阵里??~

clear
clc
x=zeros(10,10);
for t=1:10;
for m=1:10;
x(t,m)=t+m;
end
end
A=x(:);%A即为所求

只有一行或者一列数组的是行向量或者列向量。
n*n的是矩阵,1*1的是标量。
向量两个维数中一定有一个为1,而矩阵两个维数都不为1.
在MATLAB中向量和矩阵本质一样,统称为数组。

1. 向量运算和矩阵运算指令形式和实质内涵
向量运算 矩阵运算
指令 含义 指令 含义
A.'非共轭转置 A'共轭转置
A=s把标量s赋给数组A的每个元素
s+B把标量s分别与数组B的每个元素相加 s-B,B-s标量s分别与数组B的元素之差
s.*A标量s分别与数组A的元素之积 s*A标量s分别与矩阵A的元素之积
s./B, B.\s标量s分别被数组B的元素除 s*inv(B)矩阵B的逆乘标量s
A.^n数组A的每个元素的n次方 A^n A为方阵时,矩阵A的n次方
A+B数组对应元素的相加 A+B矩阵相加
A-B数组对应元素的相减 A-B矩阵相减
A.*B数组对应元素的相乘 A*B内维相同矩阵的乘积
A./B A的元素被B的对应元素除 A/B A右除B
B.\A一定与上相同 B\A A左除B(一般与右除不同)
exp(A)以e为底,分别以A的元素为指数,求幂 expm(A) A的矩阵指数函数
log(A) 对A的各元素求对数 logm(A) A的矩阵对数函数
sqrt(A) 对A的积各元素求平方根 sqrtm(A) A的矩阵平方函数
从上面可以看到,向量运算的运算如:乘,除,乘方,转置,要加"点".所以,要特别注意在求"乘,除,乘方,三角和指数函数"时,两种运算有着根本的区别.

2. 向量间的四则运算
在MATLAB中,向量间进行四则运算时,参与运算的向量必须具有相同的维数,加,减,乘,除运算是按元素与元素的方式进行的.其中,数组间的加,减运算与矩阵的加,减运算要同,运算符为:"+","-".但是,向量间的乘,除运算与矩阵间的乘,除运算完全不同,运算符号也有差别,向量间的乘,除运算符为:".*","./"或".\".
(1). 向量按元素相加,减
>>g=[1 2 3 4
5 6 7 8
9 10 11 12]
>> h=[1 1 1 1; 2 2 2 2; 3 3 3 3]
>> g+h % 按元素相加
ans =
2 3 4 5
7 8 9 10
12 13 14 15
>> ans-h % 按元素相减
ans =
1 2 3 4
5 6 7 8
9 10 11 12
>> 2*g-h % 混合运算
ans =
1 3 5 7
8 10 12 14
15 17 19 21
(2). 按元素乘
>> g.*h
ans =
1 2 3 4
10 12 14 16
27 30 33 36
(3). 按元素除
向量间的除法运算符有两个,即左除:"./"和右除:".\",它们之间的关系是:
a./b=b.\a
>> g./h
ans =
1.0000 2.0000 3.0000 4.0000
2.5000 3.0000 4.1000 4.0000
3.0000 3.3333 3.6667 4.0000
>> h.\g
ans =
1.0000 2.0000 3.0000 4.0000
2.5000 3.0000 4.1000 4.0000
3.0000 3.3333 3.6667 4.0000
(4) 幂运算
在MATLAB中,向量的幂运算的运算为:".^",表示每一个元素进行幂运算.
>> g.^2 % 向量g每个元素的平方
ans =
1 4 9 16
25 36 49 64
81 100 121 144
>> g.^(-1) % 向量g的每个元素的倒数
ans =
1.0000 0.5000 0.3333 0.2500
0.2000 0.1667 0.1429 0.1250
0.1111 0.1000 0.0909 0.0833
>> 2.^g % 以g的每个元素为指数对2进行乘方运算
ans =
2 4 8 16
32 64 128 256
512 1024 2048 4096
>> g.^h % 以h的每个元素为指数对g中相应元素进行乘方运算
ans =
1 2 3 4
25 36 49 64
729 1000 1331 1728
>> g.^(h-1)
ans =
1 1 1 1
5 6 7 8
81 100 121 144
(5) 向量的指数,对数和开方运算
在MATLAB中,所谓向量的运算实质是是数组内部每个元素的运算,因此,向量的指数,对数和开方运算与标量的运算规则完全是一样的,运算符函数分别为:exp( ),log( ),sqrt()等.
>> a=[1 3 4;2 6 5;3 2 4];
>> c=exp(a)
c =
2.7183 20.0855 54.5982
7.3891 403.4288 148.4132
20.0855 7.3891 54.5982
>>

3. 矩阵的四则运算
矩阵的四则运算与前面介绍的向量的四则运算基本相同.但也有一些差别.
(1). 矩阵的加减
矩阵的加,减与向量的加,减是完全相同的,运算时要求两矩阵的大小完全相同.
>> a=[1 2; 3 5; 2 6];
>> b=[2 4; 1 8; 9 0];
>> c=a+b
c =
3 6
4 13
11 6
(2). 矩阵的相乘
对于矩阵的乘法,从线性代数中,我们知道,要求进行相乘的两矩阵有相同的公共维.如:
>> a=[1 2; 3 5; 2 6];
>> b=[2 4 1; 8 9 0];
>> c=a*b
c =
18 22 1
46 57 3
52 62 2
设A矩阵为一个阶的矩阵,则要求与之相乘的B矩阵必须是一个阶,得到矩阵是阶的.即,只有当第一个矩阵 (左矩阵) 的列数等于第二个矩阵 (右矩阵) 的行数时,两个矩阵的乘积才有意义.
(3). 矩阵的除法
对于矩阵的除法有两个运算符号,分别为左除符号"\"和右除符号"/".矩阵的右除运算速度要慢一点,而左除运算可以避免奇异矩阵的影响.
对于方程,若此方程为超定的方程,则使用除法可以自动找到使的平方最小化的解.若此方程为不定方程,则使用除法运算符至少求得的解至多有rank(A) (矩阵A的秩)个非零元素,而且求得的解是这种类型的解中范数最小的一个.
>> a=[21 34 20; 5 78 20; 21 14 17; 34 31 38];
>> b=[10 20 30 40]';
>> x=b\a
x =
0.7667 1.1867 0.8767
上面方程是超定方程.要注意的:结果矩阵x是列向量形式.如果,
>> a=[21 34 20 5; 78 20 21 14; 17 34 31 38];
>> b=[10 20 30]';
>> x=b\a
x =
1.6286 1.2571 1.1071 1.0500
上面的方程为不定方程.

1、向量的创建

1)直接输入:

行向量:a=[1,2,3,4,5]

列向量:a=[1;2;3;4;5]

2)用“:”生成向量

a=J:K 生成的行向量是a=[J,J+1,…,K]

a=J:D:K 生成行向量a=[J,J+D,…,J+m*D],m=fix((K-J)/D)

3)函数linspace 用来生成数据按等差形式排列的行向量

x=linspace(X1,X2):在X1和X2间生成100个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。

x=linspace(X1,X2,n): 在X1和X2间生成n个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。

4)函数logspace用来生成等比形式排列的行向量

X=logspace(x1,x2) 在x1和x2之间生成50个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(50)=10x2

X=logspace(x1,x2,n) 在x1和x2之间生成n个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(n)=10x2

注:向量的的转置:x=(0,5)’

2、矩阵的创建

1)直接输入:

将数据括在[]中,同一行的元素用空格或逗号隔开,每一行可以用回车或是分号结束。

如:a=[1,2,3;3,4,5],运行后:

a =

1 2 3

3 4 5

2)函数eye,生成单位矩阵

eye(n) :生成n*n阶单位E

eye(m,n):生成m*n的矩阵E,对角线元素为1,其他为0

eye(size(A)):生成一个矩阵A大小相同的单位矩阵

eye(m,n,classname):对角线上生成的元素是1,数据类型用classname指定。其数据类型可以是:duoble、single、int8、uint8、int16、uint16、int32、uint32 。

3)函数ones 用ones生成全1的矩阵

ones(n) : 生成n*n的全1矩阵

ones(m,n) : 生成m*n的全1矩阵

ones(size(A)) : 生成与矩阵A大小相同的全1矩阵

ones(m,n,p,…)生成m*n*p*….的全1的多维矩阵

ones(m,n,…,classname)制定数据类型为classname

4)函数zeros 函数zeros生成全0矩阵

zeros(n):生成n*n的全0矩阵

zeros(m,n:)生成m*n的全0矩阵

zeros(size(A)): 生成与矩阵A大小相同的全0矩阵

zeros (m,n,p,…)生成m*n*p*….的全0的多维矩阵

zeros (m,n,…,classname)指定数据类型为classname

5)函数rand 函数rand用来生成[0,1]之间均匀分布的随机函数,其调用格式是:

Y=rand:生成一个随机数

Y=rand(n):生成n*n的随机矩阵

Y=rand(m,n):生成m*n的随机矩阵

Y=rand(size(A)):生成与矩阵A大小相同的随机矩阵

Y=rand(m,n,p,…):生成m*n*p*…的随机数多维数组

6)函数randn 函数rand用来生成服从正态分布的随机函数,其调用格式是:

Y=randn:生成一个服从标准正态分布的随机数

Y=randn(n):生成n*n的服从标准正态分布的随机矩阵

Y=randn(m,n):生成m*n的服从标准正态分布的随机矩阵

Y=randn(size(A)):生成与矩阵A大小相同的服从标准正态分布的随机矩阵

Y=randn(m,n,p,…):生成m*n*p*…的服从标准正态分布的随机数多维数组

MATLAB作为专业的数学计算软件,声明和初始化向量和矩阵非常方便,例如,你可以不用像c语言那样预先new出空间来,二是直接用下表a[2][3]=n1来输入矩阵第二行第三列的元素,这样默认就声明了一个2*3的矩阵,前面的元素默认为0,当然,你可以继续声明a[4][3]=n2,那现在a矩阵就变成了四行三列的矩阵了,也就是动态分配了存储空间。但是,动态分配会影响运行效率(大数据量的情况下,效率损失非常明显,例如进行图像的处理),所以建议还是预先分配存储空间为好。
另外的方法,你可以导入txt文档、矩阵编辑器等方式来建立矩阵。

1、向量的创建

1)直接输入:

行向量:a=[1,2,3,4,5]

列向量:a=[1;2;3;4;5]

  
2)用“:”生成向量

a=J:K 生成的行向量是a=[J,J+1,…,K]

a=J:D:K 生成行向量a=[J,J+D,…,J+m*D],m=fix((K-J)/D)

  
3)函数linspace 用来生成数据按等差形式排列的行向量

x=linspace(X1,X2):在X1和X2间生成100个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。

x=linspace(X1,X2,n): 在X1和X2间生成n个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。

  
4)函数logspace用来生成等比形式排列的行向量

X=logspace(x1,x2) 在x1和x2之间生成50个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(50)=10x2

X=logspace(x1,x2,n) 在x1和x2之间生成n个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(n)=10x2

注:向量的的转置:x=(0,5)’

  

2、矩阵的创建

1)直接输入:

将数据括在[]中,同一行的元素用空格或逗号隔开,每一行可以用回车或是分号结束。

如:a=[1,2,3;3,4,5],运行后:

a =

1 2 3

3 4 5

  

2)函数eye,生成单位矩阵

eye(n) :生成n*n阶单位E

eye(m,n):生成m*n的矩阵E,对角线元素为1,其他为0

eye(size(A)):生成一个矩阵A大小相同的单位矩阵

eye(m,n,classname):对角线上生成的元素是1,数据类型用classname指定。其数据类型可以是:duoble、single、int8、uint8、int16、uint16、int32、uint32 。

  

3)函数ones 用ones生成全1的矩阵

ones(n) : 生成n*n的全1矩阵

ones(m,n) : 生成m*n的全1矩阵

ones(size(A)) : 生成与矩阵A大小相同的全1矩阵

ones(m,n,p,…)生成m*n*p*….的全1的多维矩阵

ones(m,n,…,classname)制定数据类型为classname

  

4)函数zeros 函数zeros生成全0矩阵

zeros(n):生成n*n的全0矩阵

zeros(m,n:)生成m*n的全0矩阵

zeros(size(A)): 生成与矩阵A大小相同的全0矩阵

zeros (m,n,p,…)生成m*n*p*….的全0的多维矩阵

zeros (m,n,…,classname)指定数据类型为classname

  

5)函数rand 函数rand用来生成[0,1]之间均匀分布的随机函数,其调用格式是:

Y=rand:生成一个随机数

Y=rand(n):生成n*n的随机矩阵

Y=rand(m,n):生成m*n的随机矩阵

Y=rand(size(A)):生成与矩阵A大小相同的随机矩阵

Y=rand(m,n,p,…):生成m*n*p*…的随机数多维数组

  

6)函数randn 函数rand用来生成服从正态分布的随机函数,其调用格式是:

Y=randn:生成一个服从标准正态分布的随机数

Y=randn(n):生成n*n的服从标准正态分布的随机矩阵

Y=randn(m,n):生成m*n的服从标准正态分布的随机矩阵

Y=randn(size(A)):生成与矩阵A大小相同的服从标准正态分布的随机矩阵

Y=randn(m,n,p,…):生成m*n*p*…的服从标准正态分布的随机数多维数组


如何在matlab中建立向量和矩阵视频

相关评论:
  • 15547366293matlab创建向量的方法是什么?
    计黛雯1、首先双击matlab软件图标,打开matlab软件,可以看到matlab软件的界面。2、然后使用直接输入法,创建向量,就是讲向量的每个元素输入到中括号中。3、使用冒号表达式创建向量,具体的表达式如下:A=first:step:end。其中first表示向量的第一个元素,step表示步长,end表示向量的最后一个元素。4、使用函数linsp...

  • 15547366293matlab中如何创建一个向量
    计黛雯matlab创建列向量有一下几种办法:已知数据的条件下:假设数据为1 2 3 4 5。1.1 使用‘号转置:1.2 使用;号分割:仅创建,不在意数据的具体值 2.1 使用ones()函数 2.2 使用zeros()函数 拓展:一般创建列向量,就是对行向量进行转置即可,列向量在许多matlab操作中是必要的形式,如神经网...

  • 15547366293matlab怎么建立矩阵的向量t和x
    计黛雯1、向量的创建。直接输入,用“:”生成向量,函数linspace用来生成数据按等差形式排列的行向量。函数logspace用来生成等比形式排列的行向量。2、矩阵的创建。直接输入,函数eye,生成单位矩阵。函数ones用ones生成全1的矩阵。函数zeros函数zeros生成全0矩阵。函数rand函数rand用来生成[0,1]之间均匀分布的随机...

  • 15547366293matlab怎么生成列向量
    计黛雯首先,可以直接输入列向量,例如:a=[1;2;3;4;5]其次,使用冒号“:”可以生成等差或等比数列的列向量。例如,生成一个从J到K的等差数列:a=J:K或生成一个从J到D步长为K的等差数列:a=J:D:K对于等比数列,可以使用函数`linspace`或`logspace`。`linspace(X1,X2)`生成100个线性分布的点,而...

  • 15547366293如何在matlab中建立向量和矩阵
    计黛雯1、向量的创建 1)直接输入:行向量:a=[1,2,3,4,5]列向量:a=[1;2;3;4;5]2)用“:”生成向量 a=J:K 生成的行向量是a=[J,J+1,…,K]a=J:D:K 生成行向量a=[J,J+D,…,J+m*D],m=fix((K-J)\/D)3)函数linspace 用来生成数据按等差形式排列的行向量 x=linspace(X1,X2...

  • 15547366293怎样在Matlab中生成列向量?
    计黛雯方法一:直接输入列向量:A=[1;2;3;4]方法二:运用linspace函数,A=linspace(a,b,n),其中a代表第一个元素值,b代表最后一个元素值,n代表向量位数。这时得到的A是行向量,再将A转置即为列向量:A=A';方法三:运用冒号生成法,A=a:d:b, 其中a代表第一个元素值,b代表最后一个元素值,d...

  • 15547366293matlab向量定义
    计黛雯matlab向量定义方法:x=[];for i=1:N x=[x i];end

  • 15547366293如何在matlab中建立向量和矩阵
    计黛雯代码如下:H=[1 5 3 3;1\/5 1 3 3;1\/3 1\/3 1 3;1\/3 1\/5 1\/3 1]MATLAB的矩阵创建有很多种方法,但总的原则是不变的。原则如下:a、矩阵元素必须在”[ ]”内(用步长创建的单行向量除外);b、矩阵的同行元素之间用空格(或”,”)隔开;c、矩阵的行与行之间用”;”(或回车符...

  • 15547366293matlab怎样生成一个列向量? 例如,希望生成一个1,2,3,4, …, n的列向...
    计黛雯a = (1:n)'或者a = (linspace(1,n,m))'或者a = [1;2;3;4;5]其实这个方法跟你说的一样,只不过是将两步变成了一步,后面的方法需要穷举,对于数据量比较大的就不适合了

  • 15547366293matlab中如何定义向量
    计黛雯1、预置(preallocation)是编写MATLAB程序比较重要的一个因素,在数组比较大的时候,是否进行预置程序运行时间相差几十倍甚至几百几千倍都很常见。所以使用 A=zero(1,n);或者 A=zero(n,1);进行预置通常很重要(如果n不大倒可以不做)。2、提高MATLAB程序效率的另一个要点是向量化(Vectorization)代...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网