Hi, I am struggling to apply my fun to a loop. Any tip? Here is my code:
function T=totalflow(x,N)
T(:)=x(1:N)+x(N+1:2*N);
end
%saved as totalflow.m
and main program:
inFlow = rand(10,3);
x0 = [inFlow; zeros(size(inFlow))];
[N,M] = size(inFlow);
T=totalflow(x0,N);
% this works for only one column on inFlow. I want to get T[10,3] like:
for i=1:M
T(:,i)=totalflow(x0(:,i),N);
end
%this does not work. Any tip? Thanks

 Accepted Answer

Stephen23
Stephen23 on 25 May 2018
Edited: Stephen23 on 25 May 2018
function out = totalflow(x,N)
out = x(1:N) + x(N+1:2*N);
end
and
M = rand(10,3);
[R,C] = size(M);
T = nan(R,C);
X = [M;zeros(R,C)];
for k = 1:C
T(:,k) = totalflow(X(:,k),R);
end

1 Comment

Thanks! So the trick was in preallocating:) I used T = zeros([R,C]); instead of T = nan(R,C). The second did not run on my matlab version (2016a). Thanks!
Cheers

Sign in to comment.

More Answers (1)

Torsten
Torsten on 25 May 2018
Use
% T=totalflow(x0,N);
instead of
T=totalflow(x0,N);
Best wishes
Torsten.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 25 May 2018

Commented:

on 25 May 2018

Community Treasure Hunt

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

Start Hunting!