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));

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!