Convert a 3-d matrix to a 2-d matrix

12 views (last 30 days)
I have this variable 'a'. I want to convert it into a 2-d matrix of dimensions 3*3. The output I am looking for is a 3*3 matrix denoted by 'b'. Any help will be appreciated.
a=randi(10,3,3,2)
val(:,:,1) =
1 3 8
6 4 8
3 1 6
val(:,:,2) =
4 10 6
9 9 4
6 4 7
b =
14 310 86
69 49 84
36 14 67

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 23 Aug 2013
Edited: Andrei Bobrov on 23 Aug 2013
val(:,:,1) =[ 1 3 8
6 4 8
3 1 6];
val(:,:,2) =[ 4 10 6
9 9 4
6 4 7];
val(:,:,3) = randi([5,15],3,3)
l = floor(log10(val)+1);
ex = cumsum(l(:,:,end:-1:2),3);
c = cat(3,val(:,:,1:end-1).*10.^ex(:,:,end:-1:1),val(:,:,end))
out = sum(c,3);
or
z = num2cell(cellfun(@num2str,num2cell(val),'un',0),[1 2])
out = str2double(strcat(z{:}))

More Answers (2)

Jan
Jan on 23 Aug 2013
b = zeros( size(a, 1), size(a, 2) );
for i = 1 : size(a, 3);
b = b + 10.^(size(a, 3) - i) * a(:,:,i);
end;

Azzi Abdelmalek
Azzi Abdelmalek on 23 Aug 2013
Edited: Azzi Abdelmalek on 23 Aug 2013
out=val(:,:,1).*10.^(fix(val(:,:,2)/10)+1)+val(:,:,2)
  1 Comment
Vishal
Vishal on 23 Aug 2013
Thanks. Not sure how i could implement this for when there are upto 5 dimensions i.e. a=randi(10,3,3,5)

Sign in to comment.

Categories

Find more on Matrix Computations 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!