Asked by Muhendisleksi
on 5 May 2017

for example: There are matrix m and r:

m = [1.2000 2.4000 1.3000

2.3000 1.5000 1.0000];

r = [0.2000 0.4000 0.3000];

rr = triu(ones(3),1);

rr(rr > 0) = r;

mm = bsxfun(@times,permute(m,[2,3,1]),permute(m,[3,2,1]));

K = bsxfun(@times,mm,rr + rr.' + eye(3));

This code gives me the result I want.

The values of the matrix m can vary. for example:

m = [1.2000 2.4000 1.3000

2.3000 1.5000 1.0000

1.2000 2.4000 3.0000];

r = [0.2000 0.4000 0.3000 0.4444];

So how can I write code like "[row col] = size (m)"?

I mean;

rr = triu(ones(row),1);

rr(rr > 0) = r;

mm = bsxfun(@times,permute(m,[?,?,?]),permute(m,[?,?,?]));

K = bsxfun(@times,mm,rr + rr.' + eye(row));

Answer by dpb
on 5 May 2017

Edited by dpb
on 5 May 2017

What's wrong with

[r,c]=size(m);

mm = bsxfun(@times,permute(m,[r,c,1]),permute(m,[c,r,1]));

ADDENDUM

Which, if you haven't recognized it, can be written as

permute(m,[size(m),1]),permute(m,[flip(size(m)),1])

ERRATUM

As Guillaume astutely points out, the permute indices are NOT size(m)-dependent, but reflect the dimensionality of m as 2D array. The above, while cute, is nonsensical for the purpose.

Muhendisleksi
on 5 May 2017

Guillaume
on 5 May 2017

No idea what the original purpose of the code is, and I'm not going to try to decrypt some obscure image with no associated explanation, but it's clear to me that in the original code, the dimensions to permute do not depend on the size of m. It's always going to be [2 3 1] and [3 2 1] respectively.

The only thing that would need to change in the original code if the size of m changes is the size of rr, with

rr = triu(ones(size(m, 2)));

You would of course need more elements in r to accodomate the change in size of rr.

dpb
on 5 May 2017

Good catch, Guillaume! The permutations are not size-dependent but dimensional.

I didn't really try to read the image, either, and while the above will respond to OP's plea, it isn't useful. I'll scratch it altho I was kinda' proud of the flip(size()) thingie; I'd not thunk a' it before and can recall at least one instance could have used it to eliminate a temporary...

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 5 Comments

## Adam (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/338910-i-need-help-with-permutations#comment_451439

## Muhendisleksi (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/338910-i-need-help-with-permutations#comment_451441

## Guillaume (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/338910-i-need-help-with-permutations#comment_451466

## Muhendisleksi (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/338910-i-need-help-with-permutations#comment_451467

## Andrei Bobrov (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/338910-i-need-help-with-permutations#comment_451547

Sign in to comment.