how to generalize a nested for-loop?2
Show older comments
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.
Answers (2)
Walter Roberson
on 2 Nov 2015
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
1 Comment
Mnr
on 2 Nov 2015
Edited: Image Analyst
on 4 Nov 2015
Stephen23
on 2 Nov 2015
@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 Comments
Mnr
on 2 Nov 2015
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
on 2 Nov 2015
Stephen23
on 2 Nov 2015
I believe only one answer can be accepted.
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!