C++ 关于求梯度向量问题

WTK-CV 2013-12-03 03:46:24


如图所示,p1-p4为梯度向量,最后一步操作D = ||...||为求最终向量的模长。

已知每个梯度向量p1, p2, p3, p4的梯度幅度和梯度方向,以及该向量的起点,如某点p0,其坐标为(10, 10), 该点处梯度幅度为12, 梯度方向为30度等

可能存在上千个这样的点。

请教:用C++ 有什么好的方法能比较快速计算得到最终的D
...全文
1182 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Todd_Pointer 2013-12-03
  • 打赏
  • 举报
回复
依我有限的数学知识, 向量也就是一个有方向的量,比如 (10,10),长度为sqrt(200),方向为45度。 你这又多出个位置来, 这已经不是向量了, 以我的数学知识,实在不知道这样的东西在*2时是怎么乘的, 长度变还是位置变? 比如你那个p0,如果移动到了(20, 20)的位置, 它是变大了还是变大了?大了多少?
WTK-CV 2013-12-03
  • 打赏
  • 举报
回复
哎算了,怪我没把问题解释清楚 如果都这么简单 相加就搞定的事 我也就不100分发帖了
worldy 2013-12-03
  • 打赏
  • 举报
回复
向量合成就是实部加实部,虚部加虚部,这有什么难?
victor_woo 2013-12-03
  • 打赏
  • 举报
回复
引用 2 楼 CImage 的回复:
[quote=引用 1 楼 victor_woo 的回复:] 不明白你这个梯度向量的计算和普通向量相加求长度有何区别? 如果没有区别 那就按照公式计算就可以了
我的意思是用c++ 代码实现。从原理上说,向量方向不一致 那么肯定就没法直接相加,难点在这个地方,如果向量方向都一致,那实现肯定就很简单了,而且如果存在上千个方向不一致的向量,那么一个好的算法将很大程度影响最终计算效率。 不知道我是否解释清楚问题了?[/quote] 向量相加不难吧?

Vector v1(1,2,3);
Vector v2(2,-1,2);

Vector v3 = v1+v2; //? 3,1,5?   与方向是否一致有关系? 不是一个纯粹的数学问题?
WTK-CV 2013-12-03
  • 打赏
  • 举报
回复
引用 1 楼 victor_woo 的回复:
不明白你这个梯度向量的计算和普通向量相加求长度有何区别? 如果没有区别 那就按照公式计算就可以了
我的意思是用c++ 代码实现。从原理上说,向量方向不一致 那么肯定就没法直接相加,难点在这个地方,如果向量方向都一致,那实现肯定就很简单了,而且如果存在上千个方向不一致的向量,那么一个好的算法将很大程度影响最终计算效率。 不知道我是否解释清楚问题了?
victor_woo 2013-12-03
  • 打赏
  • 举报
回复
不明白你这个梯度向量的计算和普通向量相加求长度有何区别? 如果没有区别 那就按照公式计算就可以了

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧