Can someone do this calculation without for loops ?

2 Ansichten (letzte 30 Tage)
Amelos
Amelos am 15 Jun. 2016
Bearbeitet: Azzi Abdelmalek am 15 Jun. 2016
a = [1 2 3; 4 5 6];
b = [ 1 2 3];
for n = 1: size(a,1)
for m = 1:size(a,2)
k(n,m,:)= b.*b*a(n,m)
end
end

Akzeptierte Antwort

José-Luis
José-Luis am 15 Jun. 2016
Bearbeitet: José-Luis am 15 Jun. 2016
k = bsxfun(@times, a , reshape(b.^2,1,1,[]))
alt_k = bsxfun(@times, a , permute(b.^2,[3,1,2]))
  1 Kommentar
Amelos
Amelos am 15 Jun. 2016
this one works also , thanks k = reshape(kron(b.*b,a),[size(a),numel(b.*b)]);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Joakim Magnusson
Joakim Magnusson am 15 Jun. 2016
Do you mean like this?
fun=@(a,b) b.*b*a
k = bsxfun(fun,a,b)

Azzi Abdelmalek
Azzi Abdelmalek am 15 Jun. 2016
Bearbeitet: Azzi Abdelmalek am 15 Jun. 2016
a = [1 2 3; 4 5 6];
b = [ 1 2 3];
bb=reshape(b.*b,1,1,[])
out=bsxfun(@times,a,bb)

Kategorien

Mehr zu Dynamic System Models finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by