2017-04-11 34 views
0

我的问题如下:与逻辑掩码MATLAB小区指派

输入

一个。一个大小为[m,n,k]的单元格。

in = cell(2,2,2); 
in{1,1,1} = 'a'; in{2,1,1} = 'a'; in{1,2,1} = 'a'; in{2,2,1} = 'a'; 
in{1,1,2} = 'a'; in{2,1,2} = 'a'; in{1,2,2} = 'a'; in{2,2,2} = 'a'; 

b。一个大小为[m,n,k]的逻辑掩码。

mask = true(2,2,2); mask(1,1,2) = false; mask (2,1,1) = false; 
mask(1,1,1) = false; mask(1,2,1) = false; 

c。附加的串

str = 'b' 

期望的输出

大小[M,N,K],s.t的每个坐标I,J,T的细胞。

if mask(i,j,t)== true - > out(i,j,t)= in(i,j,t)与其他字符串连接。

否则 - >输出(I,J,T)=在(I,J,T)

在上面的例子中,出应该是:

out(:,:,1) = 
'a' 'a' 
'a' 'ab' 
out(:,:,2) = 
'a'  'ab' 
'ab' 'ab' 

什么是最优雅的方式用MATLAB来做到这一点?

谢谢!

回答

3

你可以简单地使用逻辑索引和功能strcat

out = in; 
out(mask) = strcat(out(mask),'b')