Azzera filtri
Azzera filtri

how to generalize a nested for-loop?2

1 visualizzazione (ultimi 30 giorni)
Mnr
Mnr il 2 Nov 2015
Modificato: Image Analyst il 4 Nov 2015
Hello all,
Is there a way to generalize that nested loop so that it works for any sizes of h1? Thank you.

Risposte (2)

Walter Roberson
Walter Roberson il 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 Commento
Mnr
Mnr il 2 Nov 2015
Modificato: Image Analyst il 4 Nov 2015
It works for any sizes of coeffs! Thank you!

Accedi per commentare.


Stephen23
Stephen23 il 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 Commenti
Mnr
Mnr il 2 Nov 2015
I checked again and deleted my comment few minutes after I typed it. I do not know why it is still shown to you. Thank you, they are equal and your method is fantastic. Is there a way to accept both the two answers?
Stephen23
Stephen23 il 2 Nov 2015
I believe only one answer can be accepted.

Accedi per commentare.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by