我有一个包含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
谢谢
发布于 2010-10-27 06:59:52
接下来,我假设这是与MATLAB相关的,在这种情况下,您将使用reshape函数:
Px = reshape(P, 24, []);Px现在将是一个正确的矩阵,您可以通过简单的MATLAB语法访问180个“矩阵”(实际上是行向量,您似乎混淆了这两个)中的每一个:
P100 = P(:,100);发布于 2010-10-27 06:46:36
您可以遍历索引中的项,向上计数,每24个条目创建一个新矩阵。模运算可能会有所帮助:
foreach (var currentIndexInLargerMatrix : int = 0 to 4320)
begin
matrixToPutItIn := currentIndexInLargerMatrix div 24;
indexInNewMatrix := currentIndexInLargerMatrix mod 24;
end在许多语言中,模数(余数)运算符是"mod“或"%”。"div“在这里表示整数除法。大多数语言只使用virgule (斜杠) "/“。
这显然不是完整的代码,但应该可以帮助您入门。
发布于 2010-10-27 22:38:03
我认为You's answer是解决问题的最佳方法,其中每个子矩阵都存储为较大矩阵中的行或列,并通过简单地索引到该较大矩阵来检索。
然而,如果你真的想/需要创建180个独立的变量,从P1到P180,我们已经在其他问题中讨论过了,比如this one。在您的例子中,您可以像这样使用函数EVAL:
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
endhttps://stackoverflow.com/questions/4028640
复制相似问题