matlab如何提取列矩阵(n行)的前n-1个元素(或者后n-1个元素)组成的新的列矩阵
麻烦请就列矩阵给个答案。比如a=[7;8;5;2;6;4;3]求它的前六位数组成的列矩阵,和后六位组成的列矩阵分别应该怎么表示呢?如果继续取下去,也就是再取六行的列矩阵的...
麻烦请就列矩阵给个答案。
比如a=[7;8;5;2;6;4;3]求它的前六位数组成的列矩阵,和后六位组成的列矩阵分别应该怎么表示呢?
如果继续取下去,也就是再取六行的列矩阵的前五个,或后五个组成新的五行的列矩阵。。。。。一直取到最后,并且输出每个列矩阵。能不能用什么循环语句实现?
还有那个代码里的符号数字分别代表什么啊。。。谢谢啦 展开
比如a=[7;8;5;2;6;4;3]求它的前六位数组成的列矩阵,和后六位组成的列矩阵分别应该怎么表示呢?
如果继续取下去,也就是再取六行的列矩阵的前五个,或后五个组成新的五行的列矩阵。。。。。一直取到最后,并且输出每个列矩阵。能不能用什么循环语句实现?
还有那个代码里的符号数字分别代表什么啊。。。谢谢啦 展开
展开全部
首先,介绍size()函数,该函数用于求解矩阵的维数,如下例:
>> a=[1,2,3,4,5;2,3,4,5,6;3,4,5,6,7;4,5,6,7,8]
a =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
>> size(a)
ans =
4 5
4是行数,5是列数,可以通过这个函数来确定楼上所说的n的值。
---------------------------------------------------------
然后介绍冒号的作用:
1、冒号在定义数列中的作用,1:2:5 代表数组[1,3,5],即此处冒号代表一个等差的数组。格式为“起始数:步长:结尾数”,步长可以为负。特别的,当步长为1是,可以省略,如1:3表示[1,2,3]。
2、冒号在矩阵运算中表示“所有”的意思,通过下例来说明,仍然采用前面的a矩阵:
>> a(2,:)
ans =
2 3 4 5 6
>> a(:,3)
ans =
3
4
5
6
>> a(1:3,:)
ans =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
a(2,:)表示a的第二行,所有列;a(:,3)表示所有行,第三列。a(1:3,:)表示1到3行,所有列。
-------------------------------------------------------------
以上为解决问题的基础,现在给出你提出的问题的解决方法,仍然以a矩阵为例,对于一个m*n的矩阵,我要得到前m-1行,所有列。在a中m*n表示为4*5,但是我事先不知道。
>> [m,n]=size(a)
m =
4
n =
5
首先利用size函数将行数和列数提取出来。
>> a(1:m-1,:)
ans =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
然后利用前面的方法可以得到。前m-1行的结果。
同样利用a(2:m,:)可以得到后m-1行的结果,利用a(:,1:n-1)得到前n-1列的结果,等等。
-------------------------------------------------------------
拓展,通过以上方法可以得到任意行或者任意列的结果。如:
>> a([1,3],[2,4,5])
ans =
2 4 5
4 6 7
提取了1,3两行和2,4,5三列的结果~~~~
----------------------------------------------------------
基本的东西在这里了。你所说的要求完全可以用循环语句实现。灵活运用以上的函数和方法,构思一个合适的流程即可。如果没有普遍性要求,对于n行1列或者1行n列的矩阵(退化为数组了),可以用length()函数代替size()函数,当然如果对矩阵的维数事先知道,只为解决某一个问题(具体来说是某一种大小的矩阵),并没有普适性要求的话,直接用数字代入也行。
----------------------------------------------------------
以下提供一个对于列矩阵适应的方法
a=[7;8;5;2;6;4;3];
b=a;%存放a数组
for i=1:length(a)
b=b(1:length(b)-1,:) %1到(行数-1)行,末尾无分号,直接可以输出
if length(b)==1 %最终只有一个数
break;
end
end
经测试可用~
如果需要后n-1行的,只需要改动b=b(1:length(b)-1,:)为b=b(2:length(b),:)即可。
>> a=[1,2,3,4,5;2,3,4,5,6;3,4,5,6,7;4,5,6,7,8]
a =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
>> size(a)
ans =
4 5
4是行数,5是列数,可以通过这个函数来确定楼上所说的n的值。
---------------------------------------------------------
然后介绍冒号的作用:
1、冒号在定义数列中的作用,1:2:5 代表数组[1,3,5],即此处冒号代表一个等差的数组。格式为“起始数:步长:结尾数”,步长可以为负。特别的,当步长为1是,可以省略,如1:3表示[1,2,3]。
2、冒号在矩阵运算中表示“所有”的意思,通过下例来说明,仍然采用前面的a矩阵:
>> a(2,:)
ans =
2 3 4 5 6
>> a(:,3)
ans =
3
4
5
6
>> a(1:3,:)
ans =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
a(2,:)表示a的第二行,所有列;a(:,3)表示所有行,第三列。a(1:3,:)表示1到3行,所有列。
-------------------------------------------------------------
以上为解决问题的基础,现在给出你提出的问题的解决方法,仍然以a矩阵为例,对于一个m*n的矩阵,我要得到前m-1行,所有列。在a中m*n表示为4*5,但是我事先不知道。
>> [m,n]=size(a)
m =
4
n =
5
首先利用size函数将行数和列数提取出来。
>> a(1:m-1,:)
ans =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
然后利用前面的方法可以得到。前m-1行的结果。
同样利用a(2:m,:)可以得到后m-1行的结果,利用a(:,1:n-1)得到前n-1列的结果,等等。
-------------------------------------------------------------
拓展,通过以上方法可以得到任意行或者任意列的结果。如:
>> a([1,3],[2,4,5])
ans =
2 4 5
4 6 7
提取了1,3两行和2,4,5三列的结果~~~~
----------------------------------------------------------
基本的东西在这里了。你所说的要求完全可以用循环语句实现。灵活运用以上的函数和方法,构思一个合适的流程即可。如果没有普遍性要求,对于n行1列或者1行n列的矩阵(退化为数组了),可以用length()函数代替size()函数,当然如果对矩阵的维数事先知道,只为解决某一个问题(具体来说是某一种大小的矩阵),并没有普适性要求的话,直接用数字代入也行。
----------------------------------------------------------
以下提供一个对于列矩阵适应的方法
a=[7;8;5;2;6;4;3];
b=a;%存放a数组
for i=1:length(a)
b=b(1:length(b)-1,:) %1到(行数-1)行,末尾无分号,直接可以输出
if length(b)==1 %最终只有一个数
break;
end
end
经测试可用~
如果需要后n-1行的,只需要改动b=b(1:length(b)-1,:)为b=b(2:length(b),:)即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a=[7;8;5;2;6;4;3];%或者是其他的列矩阵,可以随便设置。
x=5;%表示取a的前5行,当然也可以取前4行,这个自行设置。
b=a;%中间变量,用于存放每个不同的列矩阵。
for i=1:length(a)
b=b(1:x,:);%取前5行
b %输出c
x=x-1; %下一次就是输出前4行,前3行,……。
if x==0
break
end
end
x=5;%表示取a的前5行,当然也可以取前4行,这个自行设置。
b=a;%中间变量,用于存放每个不同的列矩阵。
for i=1:length(a)
b=b(1:x,:);%取前5行
b %输出c
x=x-1; %下一次就是输出前4行,前3行,……。
if x==0
break
end
end
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询