How to quantify shape similarity between two vectors.
7 次查看(过去 30 天)
显示 更早的评论
I need to quanitfy how similarity between two spectral profile. I have looked at procrustes distance but it dosent work when spectrum is shifted on x axis. Is there a way to quanitfy this, ideally between 0 (no similairty) and 1 (perfect similarity) ?
x1 = 0:0.1:10;
Y1 = gaussmf(x1,[0.8 5 ]);
Y2 = gaussmf(x1,[0.8 3 ]);
Y3 = gaussmf(x1,[0.4 2 ]);
figure(1)
plot(x1,Y1, 'k','Linewidth',2)
hold on
plot(x1,Y2, 'b','Linewidth',2)
hold on
plot(x1,Y3, 'r','Linewidth',2)
legend(["A","B","C"])
figure(1)
In the toy example, A and B are very similar so that should have a high similairty index but A-C and B-C should have lower similarity.
0 个评论
回答(3 个)
Matt J
2024-9-10
编辑:Matt J
2024-9-10
Perhaps you could use correlation-based similarity?
x1 = 0:0.1:10;
Y1 = gaussmf(x1,[0.8 5 ]);
Y2 = gaussmf(x1,[0.8 3 ]);
Y3 = gaussmf(x1,[0.4 2 ]);
corrcoeff(Y2,Y1)
corrcoeff(Y2,Y3)
corrcoeff(Y1,Y3)
function coeff=corrcoeff(u,v)
coeff=max(xcorr(u,v))/norm(u)/norm(v);
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Elementary Polygons 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!