MATLAB中怎样将多个行向量合并为一个矩阵
使用for循环将多个行向量合成一个行向量或者一个多维矩阵。
代码:
例:matlab使用时需要将M、N替换成实际值。
clc;clear all;close all
x0=zeros(1,N*M);
y0=zeros(1,N*M);
z0=zeros(1,N*M);
for i=1:M
t=-N/2:N/2-1;
x0(N*(i-1)+t+N/2+1)=t+i; %3*i-3+t+2
y0(N*(i-1)+t+N/2+1)=2*t+i;
z0(N*(i-1)+t+N/2+1)=4*t+i;
end
plot3(x0,y0,z0);
另外,也可以使用多维矩阵的形式,还是上面的例子,假设组成一个(M,N,3)的矩阵:
clc;clear;close all
mat=zeros(M,N,3);
for i=1:M
t=-N/2:1:N/2+1;
mat(i,:,1)=t+i;
mat(i,:,2)=t*2+i;
mat(i,:,3)=t*4+i;
plot3(mat(i,:,1),mat(i,:,2),mat(i,:,3))
hold on
end
axis([-700,700,-700,700,3,8])
grid on
扩展资料
其它方法:
1、两个行相量的合并:
a = [1,0,1,0];
b = [0,1,0,1];
I = [a ; b];
2、有限个行向量的合并:
如要合并a,b,c,d,I = [a ; b ;c ;d];
直接像两个行向量的合并一样写成
3、N个行相量的合并:
假设每次往I中合并的行向量为I0,用循环
I = [];
for i = 1 : N
I0 = []; %I0的内容根据需要而定
I = [ I ; I0];
end
1、两个行相量的合并:
a = [1,0,1,0];
b = [0,1,0,1];
I = [a ; b];
2、有限个行向量的合并:
如要合并a,b,c,d,I = [a ; b ;c ;d];
直接像两个行向量的合并一样写成
3、N个行相量的合并:
假设每次往I中合并的行向量为I0,用循环
I = [];
for i = 1 : N
I0 = []; %I0的内容根据需要而定
I = [ I ; I0];
end
扩展资料:
MATLAB还可以按照你所需要的方式合并两个矩阵A,B
I = [A, B]; %将两个矩阵左右拼接
I = [A; B]; %将两个矩阵上下拼接
注意,行向量的拼接需要列数相等,矩阵的左右拼接需要两个矩阵的行数相等,矩阵的上下拼接需要两个矩阵的列数相等。
另外,MATLAB中的cat函数可以沿指定维度串联数组。
除了楼下的方法:
如:a=[1 2 3 4];b=[2 2 2 2];
c=[a,b]=[1 2 3 4 2 2 2 2]或者c=[a;b]=[1 2 3 4;2 2 2 2]以外。
还有一种方法是使用cat函数,matlab中cat的帮助上是这样子说明的:“cat(DIM,A,B) concatenates the arrays A and B along,the dimension DIM”。其中DIM是维度,一般为1和2。cat(2,A,B) 和[A,B]是等价的, cat(1,A,B) 和[A;B]是等价的。
如:a=[1 2 3 4];
b=[2 2 2 2];
cat(1,a,b)的结果相当于[a;b],也即[1 2 3 4;2 2 2 2];相当于换行了。
cat(2,a,b)的结果相当于[a,b]或[a b],matlab中逗号和空格是等价的,也即[a,b]和[a b]等价。[1 2 3 4 2 2 2 2];相当于在第一个矩阵后面加上另外一个矩阵。这两种情况都需要注意下维度。
实例如下:
请点击输入图片描述
代码及图
可以自己多多尝试。
假设
a=[1 2 3 4];
b=[2 2 2 2];
c=[a ; b];
中间用分号表示换行,如果不需要两行直接写成[a b]就可以
这样写要注意维数一定要一样 别的就没什么了
如果想通过循环来完成应该怎么办呢
可以 那你怎么写已知向量的
假设你的已知向量都写在了1*n的A里,每一个向量是m个数,也就是有n/m个已知向量写在了A里边
现在把他们写成行的,先定义一个B来放你的这些向量
B=zeros(n/m,m);
if i=1:n/m
B(i,(i-1)*m+1:i*m)=A((i-1)*m+1:i*m);
end
这样的B应该就可以了
假设
a=[1 2 3 4];
b=[2 2 2 2];
c=[a ; b];
中间用分号表示换行,如果不需要两行直接写成[a b]就可以。
这样写要注意维数一定要一样。