Matlab 从现有矩阵中提取数据

Matlab 从现有矩阵中提取数据,matlab,matrix,Matlab,Matrix,我有一个包含4320个条目的矩阵 例如: p=[26 29 31 33 35 26 29……….25] 我想创建180个矩阵,每个矩阵包含24个条目,即 第一个矩阵包含前24个条目 第二个矩阵包含第二个24个条目,依此类推 我知道一个简单的方法,但需要很长时间,即: P1=p(1:24);P2=P(25:48),P180=P(4297:4320) 这是困难的,因为我有大量的参赛作品 原矩阵p 谢谢您可以循环索引中的项目,进行计数,每24个条目创建一个新的矩阵。模块化算法可能有助于: foreac

我有一个包含4320个条目的矩阵

例如:

p=[26 29 31 33 35 26 29……….25]

我想创建180个矩阵,每个矩阵包含24个条目,即

第一个矩阵包含前24个条目

第二个矩阵包含第二个24个条目,依此类推

我知道一个简单的方法,但需要很长时间,即:

P1=p(1:24);P2=P(25:48),P180=P(4297:4320)

这是困难的,因为我有大量的参赛作品

原矩阵p


谢谢

您可以循环索引中的项目,进行计数,每24个条目创建一个新的矩阵。模块化算法可能有助于:

foreach (var currentIndexInLargerMatrix : int = 0 to 4320)
begin
  matrixToPutItIn := currentIndexInLargerMatrix div 24;
  indexInNewMatrix := currentIndexInLargerMatrix mod 24;
end
在许多语言中,模(余数)运算符是“mod”或“%”。 这里的“div”表示整数除法。大多数语言只使用virgule(斜杠)“/”


这显然不是完整的代码,但应该让您开始学习。

我将继续,并假设这是与MATLAB相关的,在这种情况下,您将使用
重塑
函数:

Px = reshape(P, 24, []);
Px
现在将是一个合适的矩阵,您可以通过简单的MATLAB语法访问180个“矩阵”(实际上是行向量,您似乎混淆了这两个):

P100 = P(:,100);
我认为这是解决问题的最佳方法,其中每个子矩阵都存储为一行或一列,存储在一个较大的矩阵中,只需将其索引到该较大的矩阵中即可检索

但是,如果您真的想/需要创建180个单独的变量,标记为
P1
P180
,那么在其他问题中已经讨论了实现方法,如。在您的情况下,您可以使用如下函数:


对不起,我忘了提到我正在使用MATLAB程序。谢谢大家的帮助
for iMatrix = 1:180                          %# Loop 180 times
  tempP = P((1:24)+24*(iMatrix-1));          %# Get your submatrix
  eval(['P' int2str(iMatrix) ' = tempP;']);  %# Create a new variable
end