matlab 怎么把不同长度的向量存放在同一个矩阵中
1个回答
展开全部
代码:
-----------------------------------------
a=1:10;
b=1:20;
num=[];
num=[num length(a)];
num=[num length(b)]; %依次类推
m=length(num);
n=max(num);
c=zeros(m,n)*1/0; %用无穷大填充NaN
%c=zeros(m,n); %用零填充
c(1,1:num(1))=a;
c(2,1:num(2))=b;
c
----------------------------------
结果:
c =
1 2 3 4 5 6 7 8 9 10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-----------------------------------------
a=1:10;
b=1:20;
num=[];
num=[num length(a)];
num=[num length(b)]; %依次类推
m=length(num);
n=max(num);
c=zeros(m,n)*1/0; %用无穷大填充NaN
%c=zeros(m,n); %用零填充
c(1,1:num(1))=a;
c(2,1:num(2))=b;
c
----------------------------------
结果:
c =
1 2 3 4 5 6 7 8 9 10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
追问
如果用for循环呢?
for i = 1:10;
A = 1:2:2*i;
end
怎样把每次产生的向量A存到一个矩阵B里面?
追答
在原程序上稍微改改就是了呗。
如果不介意内存消耗的话,可以事先定义一个超大的数组,在最后再取出来。
clc;clear;close
B=zeros(100,100)*1/0;
row=10;
num=[];
for i=1:row
A=[];
A = 1:2:2*i;
num=[num length(A)];
B(i,1:length(A))=A;
end
column=max(num);
C=B(1:row,1:column)
结果:
-----------------------------------------
C =
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 3 NaN NaN NaN NaN NaN NaN NaN NaN
1 3 5 NaN NaN NaN NaN NaN NaN NaN
1 3 5 7 NaN NaN NaN NaN NaN NaN
1 3 5 7 9 NaN NaN NaN NaN NaN
1 3 5 7 9 11 NaN NaN NaN NaN
1 3 5 7 9 11 13 NaN NaN NaN
1 3 5 7 9 11 13 15 NaN NaN
1 3 5 7 9 11 13 15 17 NaN
1 3 5 7 9 11 13 15 17 19
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询