How to vectorize function on vectors stored in 3D tensor
3 次查看(过去 30 天)
显示 更早的评论
Hi everyone.
I have a function that sums the 3rd dimension as presented here.
This is the code:
function sumeol = sum_over_line(tau, L, zstruct, rstruct, P)
before = zeros(P.Ntimes_An, rstruct.rlength);
for i=1:P.Ntimes_An
for j=1:rstruct.rlength
for k=1:zstruct.zlength-2
before(i, j) = before(i, j).*(1-1./(exp(tau(i, j, k)))) + L(i, j, k);
end
end
end
sumeol = before;
end
I would like to vectorize it - meaning getting rid of the loop over i and j and just having one loop so that the function will get the tensors tau and L sized aXbXc and return a matrix aXb.
How should I go about that? Thank you in advance
1 个评论
Dyuman Joshi
2023-10-2
There was a misunderstanding on my side, Sorry. I have posted a new answer, please check it.
采纳的回答
Dyuman Joshi
2023-10-2
Try this -
function sumeol = sum_over_line(tau, L, zstruct, rstruct, P)
before = zeros(P.Ntimes_An, rstruct.rlength);
i=1:P.Ntimes_An;
j=1:rstruct.rlength;
for k=1:zstruct.zlength-2
before(i, j) = before(i, j).*(1-1./(exp(tau(i, j, k)))) + L(i, j, k);
end
sumeol = before;
end
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!