Clear Filters
Clear Filters

Subtract matrices in an array 'A' with elements from matrix 'B'

2 views (last 30 days)
I have a 1x27 cell array 'A' containing 27 [56x2] doubles. I also have a 27x2 matrix 'B'. I want to subtract all the elements from A{1} with B(1,:) and A{2} with B(2,:) and so on. How do I write a for loop for this?

Accepted Answer

Leeba Chacko
Leeba Chacko on 11 Mar 2021
Thank you for the answers. I managed to solve this using the following code.
[m n]=size(B);
for i=1:length(A)
for j=1:m
D{i}(j,:)= A{i}(j,:) - B(i,:);
end
end

More Answers (2)

KSSV
KSSV on 11 Mar 2021
iwant = cell(size(A));
for i = 1:length(A)
iwant{i} = A{i}-B(i,:) ;
end

Walter Roberson
Walter Roberson on 11 Mar 2021
%generate A and B for demo
A = arrayfun(@(idx) rand(56,2), 1:27, 'uniform', 0)
A = 1x27 cell array
{56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double}
B = rand(27,2)
B = 27×2
0.5867 0.3973 0.6645 0.7897 0.1848 0.7124 0.1926 0.5554 0.5047 0.3560 0.6562 0.5289 0.7456 0.6495 0.1655 0.6155 0.0578 0.6535 0.4604 0.5884
%now for the work
C = cellfun(@(a,b) a-b, A, num2cell(B, 2).', 'uniform', 0)
C = 1x27 cell array
{56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double} {56×2 double}

Categories

Find more on Loops and Conditional Statements 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!