bsxfun - @minus - how to divide by maximum
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Ko Fa
am 28 Dez. 2020
Kommentiert: Ko Fa
am 28 Dez. 2020
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 Kommentare
Akzeptierte Antwort
Bruno Luong
am 28 Dez. 2020
Bearbeitet: Bruno Luong
am 28 Dez. 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
Weitere Antworten (1)
Geoff Hayes
am 28 Dez. 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 Kommentare
Sean de Wolski
am 28 Dez. 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))
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!