how to generalize a nested for-loop?2
Afficher commentaires plus anciens
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.
Réponses (2)
Walter Roberson
le 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 commentaire
Mnr
le 2 Nov 2015
Modifié(e) : Image Analyst
le 4 Nov 2015
Stephen23
le 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 commentaires
Mnr
le 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
le 2 Nov 2015
Stephen23
le 2 Nov 2015
I believe only one answer can be accepted.
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!