bsxfun - @minus - how to divide by maximum
1 view (last 30 days)
Show older comments
Hello everyone,
I have two arrays:
a = [1; 2; 3]
b = [1; 2; 3; 4]
out = abs(bsxfun(@minus,a,b')./a)
I am getting this:
out = [0 1 2 3
0.5 0 0.5 1.0
0.67 0.33 0 0.33]
I am looking for a way to divide not simply by ./a, but to divide by the maximum number in the numerator. So instead of calculating abs(1-3)/1=2 for out(1,3) I would like the calculation to be abs((1-3)/3)=0.67.
Any help is greatly appreciated.
0 Comments
Accepted Answer
Bruno Luong
on 28 Dec 2020
Edited: Bruno Luong
on 28 Dec 2020
Do do poor job to explain, up to everyone guess
>> a = [3; 5; 1;]
a =
3
5
1
>> b = [3; 2; 3; 4]
b =
3
2
3
4
>> abs(a-b')./max(a,b')
ans =
0 0.3333 0 0.2500
0.4000 0.6000 0.4000 0.2000
0.6667 0.5000 0.6667 0.7500
>> abs(bsxfun(@minus,a,b'))./bsxfun(@max,a,b')
ans =
0 0.3333 0 0.2500
0.4000 0.6000 0.4000 0.2000
0.6667 0.5000 0.6667 0.7500
More Answers (1)
Geoff Hayes
on 28 Dec 2020
Ko - if you want to divide by the maximum of a, couldn't you just do
out = abs(bsxfun(@minus,a,b')./max(a))
?
3 Comments
Sean de Wolski
on 28 Dec 2020
But max of a is 5. So where does the 4 come from??
Also, you don't need bsxfun.
abs((a-b')/max(a))
See Also
Categories
Find more on Matrix Indexing 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!