Reshape 2D matrix to 3D using time as 3rd dimension
1 view (last 30 days)
Show older comments
Hi,
I've got a A = n x n matrix and I want to convert this 2D matrix to a 3D one using time as the third dimension. So the 3D should show how the value of all the elements in the n x n matrix changes with respect to time.
I tried using the reshape function but to no avail.
Thanks!
0 Comments
Accepted Answer
Thorsten
on 28 Oct 2015
If i is your related to your time and takes values 1,2,3, etc, and A is the n x n matrix at time point i, you can use:
B(:,:,i) = A;
2 Comments
Thorsten
on 28 Oct 2015
Edited: Thorsten
on 28 Oct 2015
You cannot use the values of kgrid.t_array, but instead 1:numel(kgrid.t_array). Your code should look something like below, assuming that you have a function that computes your NxN matrix for every timestep:
for i=1:numel(kgrid.t_array)
t = kgrid.t_array(i); % get the ith time value
A = computeNxNmatrix(t, more parameters); %
B(:,:,i) = A;
end
More Answers (1)
Matt J
on 28 Oct 2015
I tried using the reshape function but to no avail.
Be more persistent. RESHAPE is the appropriate thing to use.
2 Comments
lmaree
on 12 Mar 2021
"Beyond the second dimension, the output, B, does not reflect trailing dimensions with a size of 1. For example, reshape(A,3,2,1,1) produces a 3-by-2 matrix." from the reshape documentation.
In my case, this is exactly what I need to multiply a spacial 2D matrix with a time vector. However, reshape doesn't have the functionality it seems...
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!