Matlab两个一维数组合并为一个数组?

在 中,向量和矩阵主要是由数组表示的。

数组运算始终是 MATLAB 的核心内容,并且 MATLAB 区别于其他编程语言最大的优势就是数组计算。这种编程的优势使得计算程序简单、易读,程序命令更接近教科书上的数学公式,而且提高程序的向量化程度和计算效率,节省计算机的开销。

矩阵其实就是由 m×n 个元素组成的一个 m 行 n 列的二维数组。特别地,一个 m×1(m 行 1 列)矩阵也称为一个 m 维列向量,而一个 1×n(1 行 n 列)矩阵也称为一个 n 维行向量。

依照上面的定义可以看出:向量就是只有一行或者一列的特殊矩阵,而矩阵包含向量。

在 MATLAB 中,一维数组就是向量,二维数组就是矩阵。

向量(一维数组)的定义

在 MATLAB 中,我们可以直接输入向量,也可以使用冒号或者函数生成向量。

 
 
输入行向量时,各个元素之间以逗号,分隔;输入列向量时,各个元素之间以分号;分隔。行向量与列向量之间的区别仅仅是元素之间的分隔符而已,所以在使用直接输入创建一唯数组或向量时应注意元素之间的分隔符。
直接输入是针对小型的一维数组。

2) 用:生成等差向量

 
生成等差向量可以使用下面的格式:

其中 j 表示起始数字,k 表示终止数字,数字之间的差值是 1,或者说步长是 1。这种格式最终生成的向量是

 
如果你想控制步长,或者控制数字之间的差值,可以使用下面的格式:

其中 j 表示起始数字,d 表示步长(数字之间的差值),k 表示终止数字。这种格式最终生成的向量是:


 
这里建立的向量都是属于等差向量,在编程时可以使用这种快捷的方式建立一个等差向量。
 
linspace() 函数用来生成按等差形式排列的行向量,它的第一种用法为:

linspace() 会在 X1 和 X2 之间默认生成 100 个线性分布的数据,相邻两个数据的差保持不变,构成等差数列。
下面的例子会自动生成在 1~2 之间 100 个线性分布的向量,向量第一个数为 1,向量的最后一个数为 2。
 
由于结果太多,在此就不一一列出了,读者可以自己运行一下。
如果你想控制生成的元素的数目,可以使用下面的格式:

在 X1 和 X2 间生成 n 个线性分布的数据,相邻两个数据的差保持不变,同样能构成等差数列。
 
用 linspace() 得出来的是一个线性分布的等差数列数组,在编程时有时需要得到按等比形式排列的一维数组,这时可以使用 logspace(),读者请自己学习。
将一个数组添加到另一个数组的尾部。
上面代码的 ES5 写法中,push方法的参数不能是数组,所以只好通过apply方法变通使用push方法。有了扩展运算符,就可以直接将数组传入push方法。
数组是复合的数据类型,直接复制的话,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组。
不过,这两种方法都是浅拷贝,使用的时候需要注意。
 
 

假如有20个人,编号1,2,...,20
A B C分别是 20x1 20x1 20x7的数组,分别代表他们的身高,体重,7门课成绩
现在想把A、B和C合并在一起,变成20x200x7(身高x体重x7门课成绩)或者20x100x100x7(每个人x身高x体重x7门课成绩)的数组
请问不用循环的话,可以直接合并吗?

不好意思,问题二我还是不太懂啊
[x,y,z]是代表新得到的数组吗?

  1. M(i,:,:,:)=reshape(G,Gi); %是加在这里吗?感觉不太对,提示“要执行 RESHAPE,请勿更改元素数目。”

我要回帖

更多关于 matlab一维数组拼接 的文章

 

随机推荐