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

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?

 Réponse acceptée

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

Plus de réponses (2)

iwant = cell(size(A));
for i = 1:length(A)
iwant{i} = A{i}-B(i,:) ;
end
%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}

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by