Array notation instead of iterative loop for difference equation
2 次查看(过去 30 天)
显示 更早的评论
Hi, I have somehow a difference equation and wanted to improve the speed of my code and calculate it directly through arrays instead of an iterative loop.
I have a container that is continuously filled. It is emptied at certain times.
I would like to have the mass at each time step of the container.
With an iterative loop I calculated it:
% Dummy values for the incomming mass
m_new = randi(50,288,1);
% Time slots to empty the container
m_empty = false(size(m_new));
m_empty([60,60+96, 60+2*96]) = true;
% Use the mass of the previous time step unless the container has been emptied
contents_remaining = xor(true, m_empty);
% Initializing my array for the loop
mm = zeros(size(m_new));
% Initialize my array with a start value
mm(1) = 300;
% For each time step, calculate the content from the previous time step and the newly added mass.
for i = 1:size(m_new,1)-1
mm(i+1) = mm(i) * contents_remaining(i) + m_new(i);
end
Is it possible to perform this calculation without a for loop?
Unfortunately, I have not come up with a satisfactory result and hope you can help me to avoid the for loop.
6 个评论
回答(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!