Matrix manipulation such as subtraction

1 view (last 30 days)
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]

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 19 Dec 2013
Edited: Azzi Abdelmalek on 19 Dec 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 Comments
Azzi Abdelmalek
Azzi Abdelmalek on 19 Dec 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 on 19 Dec 2013
Thank you very much for the help :D

Sign in to comment.

More Answers (1)

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

Community Treasure Hunt

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

Start Hunting!