Matlab、R向量与矩阵操作
|
描 述 |
Matlab |
R |
1 |
建立行向量v=[1 2 3 4] |
v=[1 2 3 4] |
v<-c(1,2,3,4)或v<-scan(),然后输入1 2 3 4,并按Enter |
2 |
建立列向量v=[1 2 3 4]’ |
v=[1;2;3;4] |
同上,R中不区分行列 |
3 |
建立矩阵A=(1 4 2 5 3 6 ) |
A=[1 2 3;4 5 6] |
A<-matrix(c(1,2,3,4,5,6), nrow=2,byrow=TRUE) |
4 |
访问向量中元素,如第3个元素 |
v(3) |
v[3] |
5 |
访问矩阵中元素,如第二行,第三列 |
A(2,3) |
A[2,3] |
6 |
用访问向量元素的方式访问矩阵元素 |
A(6) **先数列后数行 |
A[6] **先数列后数行 |
7 |
生成等差递增序列(单位步长),如2,3,4,5,6,7 |
2:7 |
2:7 |
8 |
生成等差递减序列(单位步长),如7,6,5,4,3,2 |
7:-1:2 |
7:2 |
9 |
生成等差递增序列, 如2,5,8,11,14 |
2:3:14 |
seq(2,14,3) |
10 |
7-9归纳起来,介于a和b之间,等差的n个数,可用函数
|
linspace(a,b,n) |
seq(a,b,len=n) |
11 |
构建以10为底的对数等距,即在10a和10b之间的n个数 |
logspace(a,b,n) |
10^seq(a,b,len=n) |
12 |
构建所有元素都为0的k维向量 |
zeros(k,1)列向量 zeros(1,k)行向量 |
rep(0,k) |
13 |
构建所有元素都为j的k维向量 |
j*ones(k,1) 列向量 j*ones(1,k) 列向量 |
rep(j,k) |
14 |
构建所有元素都为0的n×m矩阵 |
zeros(n,m) |
matrix(0, nrow=n,ncol=m) 或matrix(0 ,n, m) |
15 |
构建所有元素都为j的n×m矩阵 |
j*ones(n,m) |
matrix(j, nrow=n, ncol=m) 或matrix(j, n, m) |
16 |
n×n的单位矩阵 |
eye(n) |
diag(n) |
17 |
构建对角阵,使其对角线上的元素为向量v |
diag(v) |
diag(v, nrow=length(v)) |
18 |
提取矩阵A对角线元素 |
v=diag(A) |
v<-diag(A) |
19 |
矩阵横向连接(行数要相等) |
[A1 A2] |
cbind(A1,A2) |
20 |
矩阵纵向连接(列数要相等) |
[A1;A2] |
rbind(A1,A2) |
21 |
给定向量x和y,长度分别为m和n,生成m×n的矩阵X,其行为x;生成m×n的矩阵Y,其列为y; |
[X,Y]=meshgrid(x, y) |
m<-length(x); n=length(y); X<-matrix(rep(x,each=n),nrow=n); Y<-matrix(rep(y,m),nrow=n) |
22 |
向量元素掉转顺序 |
v(end:-1:1) |
rev(v) |
23 |
访问矩阵A的列,如第二列 |
A(:, 2) |
A[,2]#给出的结果是向量; A[,2,drop=FALSE]#结果是n×1的矩阵 |
24 |
访问矩阵A的行,如第七行 |
A(7, :) |
A[7, ]#给出的结果是向量; A[7, ,drop=FALSE]#结果是1×m的矩阵 |
25 |
将矩阵A“拉直”为向量 |
A(:) |
c(A) |
26 |
提取子矩阵,如2-4行,3-6列 |
A(2:4,3:6) |
A[2:4,3:6] |
27 |
提取特殊元素形成矩阵,如一个3×2矩阵,包含行7,7,6,列2,1的元素 |
A([7 7 6],[2 1]) |
A[c(7,7,6),c(2,1)] |
28 |
按行掉转矩阵元素顺序 |
fliplr(A) |
t(apply(A,1,rev)) |
29 |
按列掉转矩阵元素顺序 |
flipud(A) |
apply(A,2,rev) |
30 |
截取向量v,如保留前10个元素 |
v=v(1:10) |
v<-v[1:10]或 length(v)<-10 |
31 |
截取向量v元素,从a处开始至结尾 |
v=v(a:end) |
v<-v[a:length(v)] |
32 |
截取向量v中除k以外的所有元素
|
v=v(1:(k-1) (K+1):end) |
v<-v[-k] |
33 |
截取除k和j以外的所有元素 |
32中的方法 |
v<-v[c(-k, -j)] |
34 |
对矩阵A中的元素重新排成n行m列的新矩阵(A中必须有nm个元素) |
A=reshape(A, n, m ) |
dim(A)=c(n, m) |
35 |
提取矩阵A的下三角矩阵 |
L=tril(A) |
L<-A; L[upper.tri(A)]<-0 |
36 |
提取矩阵A的上三角矩阵 |
U=triu(A) |
U<-A; U[lower.tri(A)]<-0 |
37 |
提取n×n的Hilbert矩阵 |
hilb(n) |
Hilbert(n) **需加载Matrix库 |
38 |
构建n维数组,如3×4×2 |
reshape(1:24, 3, 4, 2)或 reshape(1:24, [3 4 2]) |
array(1:24, c(3,2,4)) |