Matlab 从现有矩阵中提取数据
我有一个包含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) 这是困难的,因为我有大量的参赛作品 原矩阵pMatlab 从现有矩阵中提取数据,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
谢谢您可以循环索引中的项目,进行计数,每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