开发者

extracting data from an existing matrix

开发者 https://www.devze.com 2023-01-21 22:25 出处:网络
I have a matrix containing 4320 entries开发者_如何学Go for example: P=[ 26 29 31 33 35 26 29 ..........25]

I have a matrix containing 4320 entries

开发者_如何学Go

for example:

P=[ 26 29 31 33 35 26 29 ..........25]

I want to create 180 matrices and every matrix contains 24 entries,i.e

the 1st matrix contains the 1st 24 entries

the 2nd matrix contains the 2nd 24 entries and so on

I know a simple method but it will take a long time which is:

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

and it is dificult since I have huge number of entries for

the original matrix P

thanks


I'm going to go ahead and assume this is MATLAB-related, in which case you'd use the reshape function:

Px = reshape(P, 24, []);

Px will now be a proper matrix, and you can access each of the 180 "matrices" (actually row vectors, you seem to be confusing the two) by simple MATLAB syntax:

P100 = P(:,100);


You can loop through the items in the index, counting up, creating a new matrix every 24 entries. Modular arithmetic might help:

foreach (var currentIndexInLargerMatrix : int = 0 to 4320)
begin
  matrixToPutItIn := currentIndexInLargerMatrix div 24;
  indexInNewMatrix := currentIndexInLargerMatrix mod 24;
end

in many languages the modulus (remainder) operator is either "mod" or "%". "div" here denotes integer division. Most languages just use the virgule (slash) "/".

This obviously isn't complete code, but should get you started.


I think You's answer is the best way to approach your problem, where each submatrix is stored as a row or column in a larger matrix and is retrieved by simply indexing into that larger matrix.

However, if you really want/need to create 180 separate variables labeled P1 through P180, the way to do this has been discussed in other questions, like this one. In your case, you could use the function EVAL like so:

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
0

精彩评论

暂无评论...
验证码 换一张
取 消