matLAB如何表示二维数组中得一列数?

matLAB如何表示二维数组中得一列数?,第1张

1、打开matlab,输入a=[1 2 3;2 4 5;6 7 8],创建一个3行3列的a矩阵,如下图所示。

2、输入a(:),将二维矩阵转化为一维数组,如下图所示。

3、按回车键之后,可以看到成功转化成一维数组了,如下图所示。

4、输入reshape(a,[],1),也可以将二维矩阵转化为一维数组,如下图所示。

5、按回车键之后,可以看到通过reshape(a,[],1),也成功转化为一维数组了,如下图所示。

数组运算是MATLAB计算的基础。文中是以二维数组数组的运算为例,可自行推广到多维数组和多维矩阵的运算。

矩阵和数组的区别与联系

区别:

(1)矩阵是数学上的概念,而数组是计算机程序设计领域的概念。

(2)作为一种变换或者映射算符的体现,矩阵运算有着明确而严格的数学规则。而数组运算是MATLAB软件定义的规则,其目的是为了使数据管理方便, *** 作简单,命令形式自然,执行有效

联系:

在MATLAB中,矩阵是以数组的形式存在的。因此,一维数组相当于向量,二维数组相当于矩阵,所以矩阵是数组的子集。

数组的创建与 *** 作

1在MATLAB中一般用方括号[],逗号“,”,空格和分号“;”来创建数组,数组中同一行的元素使用逗号或者空格进行隔开,不同行用分号进行分隔。

2通过冒号创建一维数组

在MATLAB中,可以通过冒号创建一维数组

X=A:step:B

A是创建一维数组的第一个变量,step是每次递增或递减的数值,知道最后一个元素个B的差的绝对值小于等于step的绝对值为止。

当指定step时,系统默认step=1

3通过logspace函数创建一维数组

MATLAB中常用logspace()函数创建一维数组,调用方式如下:

(1)y=logspace(a,b);该函数创建行向量y,第一个元素为10^a,最后一个元素为10^b,形成总是为50个元素的等比数列。

(2) y=logspace(a,b,n);该函数创建行向量y,第一个元素为10^a,最后一个元素为10^b,形成总数为n个元素的等比数列。

4通过函数创建一维数组

MATLAB常用linspace()函数创建一维数组,该函数的调用方式如下。

(1)y=linspace(a,b) :该函数创建行向量y,第一个元素为a,最后一个元素为b,形成总数为100个元素的等差数列。

(2)y=linspace(a,b,n):该函数创建行向量y,第一个元素为a,最后一个元素为b,形成总数为n个元素的等差数列。

注:当n<2时,y=linspace(a,b,n)函数返回的数值为b。

数组的访问

A(a:b) 访问数组的第a个到第b个元素

A([a b])访问数组的第a个和第b个元素

A(a:end)访问数组第a个元素到最后一个元素

A(end:-1:a) 访问数组最后一个元素,逆序到第a个元素

在matlab里可以利用size函数获得一个矩阵的行数或列数。

size(a) 返回一个行向量,其元素包含 A 的相应维度的长度。例如,如果 a 是一个2×3矩阵,则 size(a) 返回向量 [2,3]。

具体说明如下。

1、第一步在matlab中命令行窗口中输入“a=[1 2 3;2 4 6]”,按回车键创建一个2行3列的矩阵,如下图所示:

2、第二步输入“[m,n]=size(a)”,按回车键,可以看到获取了a矩阵的行数和列数,m是行数,n是列数,如下图所示:

3、第三步如果我们只想获取矩阵的行数,可以输入“ size(a,1)”,如下图所示:

4、第四步如果只想获取矩阵的列数,可以输入“size(a,2)”,如下图所示:

参考资料:

MathWorks-MATLAB size

1如果数据文件为excel文件(xls或者xlsx格式的文件),如下图所示的数据文件。

2只需要使用MATLAB中提供的系统函数xlsread函数即可,其主要的调用形式为:

a=xlsread('filenamexls');

3其中a表示读入文件所保存的变量名称,filenamexls(或者filenamexlsx)表示excel数据文件,help帮助文档中对xlsread函数的介绍如下图所示:

4对于上图所示的数据文件,只需要使用下面的命令进行读取即可:

A = xlsread('dataxlsx');

5如果数据文件保存在excel的某个sheet中,使用方式为:

 A = xlsread('dataxlsx','Sheet1');

6如果需要把某个变量的存储的数据写入到excel文件(xls或者xlsx格式的文件),如下图所示的变量。

7只需要使用MATLAB中提供的系统函数xlswrite()函数即可,其主要的调用形式为:

xlswrite('filenamexls',variable);

其中variable表示需要写入Excel文件的变量名称,filenamexls(或者filenamexlsx)表示excel数据文件,help帮助文档中对xlswrite()函数的介绍如下图所示:

8对于上图所示的数据文件,只需要使用下面的命令进行读取即可:

xlswrite('outputxlsx',A);

9Excel数据文件如下图所示。

for n=1:1000

x(1)=03;

y(1)=2;

x(n+1)=(x(n)+25)x(n);

y(n+1)=(n/2-y(n));

end

save('xmat','x');

save('ymat','y');

plot(x)

figure

plot(y)

matlab多维数组 *** 作

1一个三维数组由行、列和页三维组成,其中每一页包含一个由行和列构成的二维数组。

2利用标准数组函数创建多维数组

A=zeros(4,3,2) 生成一个4行3列2页的三维全0数组,ones,rand和randn等函数有相似的用法。

3利用直接索引方式生成多维数组

A=zeros(2,3)

A(:,:,2)=ones(2,3)

A(:,:,3)=4

上面的代码先生成一个二维数组作为三维数组的第一页,然后通过数组直接索引,添加第二页、第三页。

4利用函数reshape和repmat生成多维数组

B=reshape(A,2,9)

B=[A(:,:,1) A(:,:,2) A(:,:,3)] %结果与上面一样。

reshape(B,2,3,3)

reshape(B,[2 3 3]) %结果与上面一样。

提示:reshape函数可以将任何维数的数组转变成其他维数的数组。

5利用repmat函数生成多维数组

C=ones(2,3)

repmat(C,[1 1 3]) % repmat写出类似reshape的repmat(C,1,1,3)将显示出错

提示:repmat是通过数组复制创建多维数组的,上面的代码即是将数组C在行维和列维分别复制一次,然后再页维复制三次得到2×3×3的三维数组。

6利用cat函数创建多维数组

a=zeros(2);

b=ones(2);

c=repmat(2,2,2);

D=cat(3,a,b,c)%创建三维数组

D=cat(4,a,b,c) %创建4维数组。

D(:,1,:,:) %查看第一列的数据。

size(D) %可以知道数组D的具体维数。

6数组运算与处理

数组之间的运算要求两个数组在任何一维都必须具有相同的大小。

(1)squeeze函数用于删除多维数组中的单一维(即大小为1的那些维)

E=squeeze(D)

size(D) E的数据和D一样,但比D少了一维,只有2行、2列和3页。

(2)reshape函数可以将一个三维向量变成一维向量。

v(1,1,:)=1:6

squeeze(v)

v(:)

(3)reshape函数用于改变多维数组的行、列、页以及更高阶的维数,但不改变数组元素的总个数。

F=cat(3,2+zeros(2,4),ones(2,4),zeros(2,4))

G=reshape(F,[3,2,4])

H=reshape(F,[4 3 2]) 或K=reshape(F,2,12)

多维数组的重组按这样的顺序:第一页的第一列、第二列……,第二页的第一列、第二列……。

7sub2ind函数和ind2sub函数用于多维数组的直接引用,索引顺序与重组顺序一致。

sub2ind(size(F),1,1,1) %求第1行、第1列、第1页的数值的单一索引

sub2ind(size(F),1,2,1) %求第1行、第2列、第1页的数值的单一索引

sub2ind(size(F),1,2,3) %求第1行、第2列、第3页的数值的单一索引

[r c p]=ind2sub(size(F),19) %由单一索引求其对应的行列页数值。

8.函数flipdim用于多维数组的翻转,相当于二维数组中的flipud和fliplr函数。例如下面的代码进行按行、列和按页翻转。

M=reshape(1:18,2,3,3)

flipdim(M,1) %每一页中的行翻转

flipdim(M,2) %每一页中的列翻转

flipdim(M,3) %将第一和第三页翻转调换

9函数shiftdim用于循环轮换一个数组的维数。如果一个数组r行、c列和p页,则循环轮换一次,就生成一个c行、p列和r页的数组。

M %重新调用

shiftdim(M,1) %轮换一次

shiftdim(M,2) %轮换两次

数组轮换后规律很难直观理解,我们可以将三维数组看成一个类似魔方的方形盒子

函数shiftdim也支持负的循环轮换次数。执行该轮换时,数组的维数增加,并且多出的维数均为单一维。

M %重新调用

size(M)

shiftdim(M,-1)

size(ans)

10函数permute和ipermute用于实现多维条件下的转置 *** 作。从本质上讲permute函数是shiftdimhas函数的扩展。

M %重新调用

permute(M,[2 3 1])

shiftdim(M,1) %两者结果一样

permute函数中的参数[2 3 1]表示使函数第二维成为第一维,第三维成为第二维,第一维成为第三维。

11 permute(M,[2 1 3])

[2 1 3]表示将数组的行列相互转置,页保持不变(只在第一和第二维转置)。

permute函数的第一个参数为待转置的数组,第二个参数为转置顺序,它必须是待转置的多维数组的维数的某种排列,否则所进行的转置无法进行。

permute函数也可以用来将一个数组变成更高维的数组,例如shiftdim(M,-1)也可以用permute函数来实现。

permute(M,[4 1 2 3])

这是 因为任何一个数组都具有大于其本身尺寸的更高维数,并且这些维数均为单一维数。例如二维数组具有页这一维,只是只有一页。总之超过数组本身大小的维数都是单一维。M是一个三维数组,其第四维必为单一维,因此将M的第四维与第一维转置,第一维变成了单一维。

12.二维数组两次转置变换回原来的形式,对于多维数组,用函数ipermute来取消permute所执行的转置 *** 作。

M %重新调用

permute(M,[3 2 1])

ipermute(M,[3 2 1]) %在我的Matlab上运行没有达到预期效果

13.size函数返回数组每一维的大小

numel函数返回数组的总元素个数

当不指定size的返回值时,将返回一个由数组的各维数组成的向量。当我们知道数组的维数时,可以将维数返回到指定变量中。

[r c p]=size(M)

r=size(M,1)

c=size(M,2)

p=size(M,3)

v=size(M,4)

当一个数组的维数或者某数组维数不确定时,可以利用函数ndims获得数组的维数值。例如:ndims(M),与length(size(M))等效。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12176682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存