# Column multiplication in the same matrix

14 views (last 30 days)

Show older comments

Mahmoud Solomon
on 29 Mar 2018

Commented: Yuanli Guo
on 13 Dec 2021

I have a 3 by 3 matrix and would like to loop and multiply column 1 with all other columns but not itself and also column 2 with other columns but not itself and column 3 with other columns but not itself.

x11 = [1 2 3; 4 5 3; 2 8 3];

[m12, n12] = size(x11);

for i = 1:m12

for j = 1:n12

x1x1(i, j)=x11(i, j).*x11(i, j)

end

end

##### 0 Comments

### Accepted Answer

Star Strider
on 29 Mar 2018

Try this:

x11 = [1 2 3; 4 5 3; 2 8 3];

[m12, n12] = size(x11);

for k1 = 1:n12

x11t = x11; % Copy ‘x11’

idx = setdiff(1:n12, k1) % Columns To Be Multiplied

x11t(:,idx) = bsxfun(@times, x11(:,idx), x11(:,k1)) % Assign Multiplied ‘Columns To Be Multiplied’ To Appropriate Columns Of ‘x11t’

x1x1(:,:,k1) = x11t; % Store In Output Array

end

It appears to do what you want.

##### 8 Comments

### More Answers (2)

Elias Gule
on 29 Mar 2018

Here you go:

[nr,nc] = size(x11);

for col = 1 : nc

col_data = x11(:,col);

col_prod = bsxfun(@times,col_data,x11(:,~all(ismember(x11,col_data))));

col_prod % you can store this in another array

end

##### 2 Comments

Elias Gule
on 29 Mar 2018

ok. I see what you mean. You are basically multiplying the columns of a matrix while ignoring the currently selected column.

x11 = [1 2 3; 4 5 3; 2 8 3];

[nr,nc] = size(x11);

for col = 1 : nc

col_data = x11(:,col);

tempX11 = x11(:,~all(ismember(x11,col_data)));

col_prod = tempX11(:,1).*tempX11(:,2);

col_prod % you can store this in another array

end

Elias Gule
on 29 Mar 2018

I believe this works as expected:

x11 = [1 2 3; 4 5 3; 2 8 3];

[nr,nc] = size(x11);

for col = 1 : nc

col_data = x11(:,col);

tempX11 = x11(:,~all(ismember(x11,col_data)));

col_prod = tempX11(:,1).*tempX11(:,2);

col_prod % you can store this in another array

end

##### 2 Comments

Yuanli Guo
on 13 Dec 2021

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!