fun applied to a loop

조회 수: 1 (최근 30일)
sensation
sensation 2018년 5월 25일
댓글: sensation 2018년 5월 25일
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

채택된 답변

Stephen23
Stephen23 2018년 5월 25일
편집: Stephen23 2018년 5월 25일
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
sensation
sensation 2018년 5월 25일
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

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Torsten
Torsten 2018년 5월 25일
Use
% T=totalflow(x0,N);
instead of
T=totalflow(x0,N);
Best wishes
Torsten.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by