Matlab:在某些条件下将二维矩阵中的值插入三维矩阵

Nis*_*ant 1 matlab matrix vectorization

输出是一个3d矩阵,size(output) == [height width N]输入是一个2d矩阵size(input) == [height width].我需要在一行中实现以下代码.

for k = 1:size(output,3)
    f = output(:,:,k);
    i_zero = (f==0);
    f(is_zero) = input(is_zero);
    output(:,:,k) = f;
end
Run Code Online (Sandbox Code Playgroud)

Div*_*kar 5

bsxfun 方法 -

output = bsxfun(@times,output==0,input) + output
Run Code Online (Sandbox Code Playgroud)

替代方法 -

output = (output==0).*input(:,:,ones(1,N))+ output
Run Code Online (Sandbox Code Playgroud)