MATLAB中怎样将多个行向量合并为一个矩阵

 我来答
问明6E
高粉答主

2019-06-29 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.5万
展开全部

使用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

yuryonice
2019-03-15 · TA获得超过176个赞
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

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函数可以沿指定维度串联数组。

参考资料来源:MATLAB官网——数组的创建、合并、重构、重新排列以及索引

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
名水cD
2019-08-28
知道答主
回答量:17
采纳率:0%
帮助的人:5673
展开全部

除了楼下的方法:

如: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];相当于在第一个矩阵后面加上另外一个矩阵。这两种情况都需要注意下维度。

实例如下:

请点击输入图片描述

代码及图

可以自己多多尝试。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刘威108
推荐于2017-10-05 · TA获得超过128个赞
知道答主
回答量:110
采纳率:100%
帮助的人:109万
展开全部
直接添加就可以了
假设
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应该就可以了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
X先森说

推荐于2017-10-04 · TA获得超过1.4万个赞
知道大有可为答主
回答量:6377
采纳率:82%
帮助的人:664万
展开全部
直接添加即可
假设
a=[1 2 3 4];
b=[2 2 2 2];
c=[a ; b];
中间用分号表示换行,如果不需要两行直接写成[a b]就可以。
这样写要注意维数一定要一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式