Convert a 3-d matrix to a 2-d matrix
    7 次查看(过去 30 天)
  
       显示 更早的评论
    
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 个评论
采纳的回答
  Andrei Bobrov
      
      
 2013-8-23
        
      编辑:Andrei Bobrov
      
      
 2013-8-23
  
      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 个评论
更多回答(2 个)
  Jan
      
 2013-8-23
         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 个评论
  Azzi Abdelmalek
      
      
 2013-8-23
        
      编辑:Azzi Abdelmalek
      
      
 2013-8-23
  
       out=val(:,:,1).*10.^(fix(val(:,:,2)/10)+1)+val(:,:,2)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Linear Algebra 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!