matlab矢量角度,MATLAB矢量,角度,图
我為這個含糊不清的標題道歉,但我并不完全確定如何用這句話來表達.所以忍受我.
我有一個數據矩陣.每列和每行代表某個向量(第1列=第1行,第2列=第2行等),每個單元格值是相應向量之間的余弦相似度.所以矩陣中的每個值都是余弦.
我想對此做幾件事.首先,我想創建一個顯示其上所有向量的圖形.我知道每個矢量之間角度的余弦,我知道每個矢量的大小,但這是我唯一的信息 – 是否有一些我可以實現的算法將貫穿所有各種成對角度并顯示它以圖形方式?也就是說,我不知道所有向量在哪里相互關聯,并且手動執行此操作的數據點太多(例如,如果我只有三個向量,它們之間的角度都是45,12 ,72度,這將是微不足道的).那我該怎么做呢?我甚至沒有想到我需要做什么樣的數學函數. (我有83個向量,因此有數千個余弦值).所以基本上這個數字(它可以是二維或多維,并且說實話我想兩者都做)會顯示所有向量以及它們如何在空間中相互關聯(所以我可以比較兩個角度和相對大小) .
我想做的另一件事情更簡單,但我很難搞清楚.我可以將余弦值轉換為笛卡爾坐標并在散點圖中顯示它們.有沒有辦法將散點圖的每個點連接到圖上的(0,0)?
最后,在嘗試弄清楚如何自己完成上述某些操作時,我遇到了一些不一致的問題.我計算了83個向量中每一個的平均角度和笛卡爾坐標.這方面的數學很簡單,我已經檢查并仔細檢查了它.然而,當我嘗試繪制它時,不同的繪圖方法給了我完全不同的東西.所以,如果我將笛卡爾坐標繪制為散點圖,我會得到:
如果我在羅盤圖中繪制平均角度,我會得到:
如果我使用箭袋情節,我會得到這樣的東西(我通過將原點向上移動到右邊來改變這一點,這樣你就可以更好地看到它):
我做錯了什么,還是我誤解了我正在使用的繪圖功能?因為這些結果似乎都很不一致.指南針圖上的平均角度都是<30度左右,但是在箭頭圖上,一些似乎超過90度,并且在散點圖上它們也延伸到30以上.這里發生了什么? (這是我的代碼:)
cosine = load('LSA.txt');
[rows,columns]=size(cosine);
p = cosine.^2;
pp = bsxfun(@minus, 1, p);
sine = sqrt(pp);
tangent = sine./cosine;
Xx = zeros(rows,1);
Yy = zeros(rows,1);
for i = 1:columns
x = cosine(:,i);
y = sine(:,i);
Xx(i,1) = sum(x) * (1/columns);
Yy(i,1) = sum(y) * (1/columns);
end
scatter(Xx,Yy);
Rr = zeros(rows,1);
Uu = zeros(rows,1);
for j = 1:rows
Rr(j,1) = sqrt(Xx(j,1).^2 + Yy(j,1).^2);
Uu(j,1) = atan2(Xx(j,1),Yy(j,2));
end
%COMPASS PLOT
[theta,rho] = pol2cart(Uu,1);
compass(theta,rho);
%QUIVER PLOT
r = 7;
sx = ones(size(cosine))*2; sy = ones(size(cosine))*2;
pu = r * cosine;
pv = r * sine;
h = quiver(sx,sy,pu,pv);
set(gca, 'XLim', [1 10], 'YLim', [1 10]);
最佳答案 你可以準確地解決這個問題.
dot product計算余弦.這意味著你的矩陣實際上是M = V’* V.
這應該可以通過特征值來解決.你說你也有長度.
你唯一的問題 – 作為你的原始矩陣,向量將是83維.不容易在2維或3維繪圖.我認為你只是使用平均角度來簡化.有一些技術被稱為維數減少 – 這是一個toolbox.我建議在1-cosine上使用sammon projection(因為這將是單位球上的點的距離)來計算這樣一個圖的向量.
總結
以上是生活随笔為你收集整理的matlab矢量角度,MATLAB矢量,角度,图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C指针原理(38)-C快速入门
- 下一篇: matlab对经济指标分析,经济背景下的