Info
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
Vectorize loop with function containing randoms
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello,
I would like to know if there is any way to vectorize this:
ds=zeros(1,max);
for i=1:max
ds(i)=containsRandoms(p1);
end
p1 is always a fixed scalar, I just want to execute the function many times to fill ds. The function I'm calling inside the loop contains randoms and many other calculations, so it will produce a different result each time.
I was trying something like
ds(1:max)=containsRandoms(p1);
but it is only executing containsRandoms once, and therefore ds is filled with the same value repeated max times.
Thanks in advance.
댓글 수: 0
답변 (3개)
Peter
2011년 10월 14일
You'd have to vectorize containsRandoms, not just the assignment to ds.
댓글 수: 4
Sean de Wolski
2011년 10월 14일
Yes. Avoid arrayfun. A for-loop is easier to understand and probably faster, especially in older versions.
Fangjun Jiang
2011년 10월 14일
First, don't use max as a variable name as max() is a popular function.
Second, Are you looking at: ds=rand(5,3) for example?
Or:
a=magic(3);
b=arrayfun(@containsRandoms,a)
Assume your function containsRandoms() is something like this:
function out=containsRandoms(in)
out=in+rand;
댓글 수: 5
Fangjun Jiang
2011년 10월 14일
Then, arrayfun() is probably what you are looking for. See update in the answer.
Andrei Bobrov
2011년 10월 14일
ds = arrayfun(@(i1)containsRandoms(p1),1:max1);
%if size of 'ds' m x n eg. 2 x 2
ds = reshape(arrayfun(@(i1)containsRandoms(p1),1:2*2),2,[]);
댓글 수: 2
이 질문은 마감되었습니다.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!