matlab矢量角度,MATLAB矢量,角度,图

我为这个含糊不清的标题道歉,但我不完全确定如何用这句话来表达。所以忍受我。

我有一个数据矩阵。每列和每行代表某个向量(第1列=第1行,第2列=第2行等),每个单元格值是相应向量之间的余弦相似度。所以矩阵中的每个值都是余弦。

我想对此做几件事。首先,我想创建一个显示其上所有向量的图形。我知道每个矢量之间角度的余弦,我知道每个矢量的大小,但这是我唯一的信息 - 是否有一些我可以实现的算法将贯穿所有各种成对角度并显示它以图形方式?也就是说,我不知道所有向量在哪里相互关联,并且手动执行此操作的数据点太多(例如,如果我只有三个向量,它们之间的角度都是45,12 ,72度,这将是微不足道的)。那我该怎么做呢?我甚至没有想到我需要做什么样的数学函数。 (我有83个向量,因此有数千个余弦值)。所以基本上这个数字(它可以是二维或多维,并且说实话我想两者都做)会显示所有向量以及它们如何在空间中相互关联(所以我可以比较两个角度和相对大小)

我想做的另一件事情更简单,但我很难搞清楚。我可以将余弦值转换为笛卡尔坐标并在散点图中显示它们。有没有办法将散点图的每个点连接到图上的(0,0)?

最后,在尝试弄清楚如何自己完成上述某些操作时,我遇到了一些不一致的问题。我计算了83个向量中每一个的平均角度和笛卡尔坐标。这方面的数学很简单,我已经检查并仔细检查了它。然而,当我尝试绘制它时,不同的绘图方法给了我完全不同的东西。因此,如果我将笛卡尔坐标绘制为散点图,我会得到:

9is2f.jpg

如果我在罗盘图中绘制平均角度,我会得到:

APaEv.jpg

如果我使用箭袋情节,我会得到这样的东西(我通过将原点向上移动到右边来改变这一点,这样你就可以更好地看到它了):

kiSLX.jpg

我做错了什么,还是我误解了我正在使用的绘图功能?因为这些结果似乎都很不一致。指南针图上的平均角度都是<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]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值