2 views (last 30 days)

Show older comments

Hello Mathworks community! Could someone give me a hand?

I'm having trouble trying to create a matrix for loop. Since my actual code is complex, I'm going to propose a much simple idea.

Imagine I have a matrix A 4x12 input such as:

A = [1,2,3,4,5,6,3,5,4,2,5,1;

1,2,3,4,5,6,3,5,4,2,5,1;

12,5,6,9,2,3,5,3,4,3,6,1;

12,5,6,9,2,3,5,3,4,3,6,1]

And another matrix b:

b = [1, 2, 3;

2, 2, 1;

3, 2, 1;

1, 2, 6]

Let's say each row of A is divided in 3 subarrays with 4 positions each (12 positions in every row). Now, I'd like to sum each A position with the corresponding value of b. So b(1,1) would be added to A(1,1), A(1,2), A(1,3) and A(1,4); b(1,2) would be added to A(1,5), A(1,6), A(1,7) and A(1,8); ...

On the same loop, I would like to substract to every value of that output( the dimensions still are 4x12) the value of c corresponding to its row. (the first row of out minus c(1), the second row of out minus 12, ...

c = [10;12;14;16]

I'm working with much bigger data, so trying to do it "manually" wouldn't be useful.

Thank's for the help!

Santos

Jon
on 16 Feb 2021

You can do this without a loop, for example

out = [A(:,1:4)-b(:,1) A(:,5:8)-b(:,2) A(:,9:12)-b(:,3)]

out = out - c

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

Start Hunting!