3D matrix time 2D matrix

1 view (last 30 days)
fireman
fireman on 13 Sep 2016
Commented: fireman on 14 Sep 2016
I need to do the following and I am wondering if they can be done in a much simple and efficient way.
s = size(relu);
M = s(1) * s(2);
N = s(3);
delta = single(zeros(s));
for i = 1 : s(1)
for j = 1 : s(2)
for k = 1 : s (3)
if relu(i, j, k) > 0
delta(i, j, k) = reshape(relu(i, j, :), [1, s(3)]) * gamma(:, k) / M / M / N / N;
else
delta(i, j, k) = 0;
end
end
end
end

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 13 Sep 2016
Edited: Andrei Bobrov on 13 Sep 2016
Let your gamma -> gamma1 (because gamma - name of the function from MATLAB)
s = size(relu);
M = s(1) * s(2);
N = s(3);
r1 = reshape(relu,[],s(3));
delta1 = reshape(r1*gamma1,s).*(relu > 0)/(M*N)^2;

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!