Convert a 3-d matrix to a 2-d matrix
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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
0 Kommentare
Akzeptierte Antwort
Andrei Bobrov
am 23 Aug. 2013
Bearbeitet: Andrei Bobrov
am 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{:}))
0 Kommentare
Weitere Antworten (2)
Jan
am 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;
0 Kommentare
Azzi Abdelmalek
am 23 Aug. 2013
Bearbeitet: Azzi Abdelmalek
am 23 Aug. 2013
out=val(:,:,1).*10.^(fix(val(:,:,2)/10)+1)+val(:,:,2)
Siehe auch
Kategorien
Mehr zu Linear Algebra finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!