how to generalize a nested for-loop?2
이전 댓글 표시
Hello all,
Per my earlier question in http://www.mathworks.com/matlabcentral/answers/252008-a-simpler-way-of-doing-a-nested-loop
Is there a way to generalize that nested loop so that it works for any sizes of h1? Thank you.
답변 (2개)
Walter Roberson
2015년 11월 2일
coeffs = [0.3, 0.2, 0.5, 0.8, 0.1, 0.75]; %for example
V = [1+1i +1-1i -1+1i -1-1i];
n = length(coeffs);
[Vg{1:n}] = ndgrid(V);
Vm = cell2mat( cellfun(@(C) C(:), Vg, 'Uniform', 0) );
t_h1 = Vm * coeffs(:);
h1 = reshape(t_h1, length(V) * ones(1,n));
clear n Vg Vm t_h1
Stephen23
2015년 11월 2일
@Mnr: try this:
V = [1+1i,+1-1i,-1+1i,-1-1i];
W = [0.3,0.2,0.5,0.8];
N = numel(V);
X = cell(1,N);
[X{:}] = ndgrid(V);
Y = cat(N+1,X{:});
S = [ones(1,N),N];
Z = sum(bsxfun(@times,reshape(W,S),Y),N+1);
댓글 수: 4
Mnr
2015년 11월 2일
What do you mean "the original form"? What are you observing? How are you checking this? What code you are using?
When I run my code above and the code given by Walter Roberson in his answer to your earlier question and then compare the outputs:
>> isequal(h1,Z)
ans = 1
this tells us that their outputs are exactly the same size and contains exactly the same values. They cannot be any more similar than this!
Mnr
2015년 11월 2일
Stephen23
2015년 11월 2일
I believe only one answer can be accepted.
카테고리
도움말 센터 및 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!