Matrix manipulation such as subtraction

1 Ansicht (letzte 30 Tage)
Elvin
Elvin am 19 Dez. 2013
Kommentiert: Elvin am 19 Dez. 2013
Can I ask for some help regarding matrix manipulation? Here's what I'm after. Let's say for example I have two arrays:
A = [2 3 4 5]
B = [0 1 2 3 4 5 6 7 8 9]
The output that I want is a cell containing an answer like this:
C{1} = [2-0 3-0 4-0 5-0]
C{2} = [2-1 3-1 4-1 5-1]
.
.
.
C{10} = [2-9 3-9 4-9 5-9]

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 19 Dez. 2013
Bearbeitet: Azzi Abdelmalek am 19 Dez. 2013
A = [2 3 4 5] ;
B = [0 1 2 3 4 5 6 7 8 9];
out=arrayfun(@(x) A-x,B,'un',0);
celldisp(out)
%or
A = [2 3 4 5];
B = [0 1 2 3 4 5 6 7 8 9];
out1=bsxfun(@minus,A,B')
out=num2cell(out1,2);
celldisp(out)
  9 Kommentare
Azzi Abdelmalek
Azzi Abdelmalek am 19 Dez. 2013
out1={1:6 11:16}
out2={2:7 12:17}
out3={3:8 13:18}
out=cellfun(@(x,y,z) sqrt(x.^2+y.^2+z.^2),out1,out2,out3,'un',0)
Elvin
Elvin am 19 Dez. 2013
Thank you very much for the help :D

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

José-Luis
José-Luis am 19 Dez. 2013
Faster:
your_mat = repmat(A,numel(B),1)-repmat(B',1,numel(A));

Kategorien

Mehr zu Matrix Indexing 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