matlab提高效率:如何将这个循环向量化

matlab提高效率:如何将这个循环向量化目前遇到一个问题,想比较一个向量里的每一个元素和另一个矩阵中所有元素,记录相等的个数,返回该向量长度的一个数组记录个数,不知道不... matlab提高效率:如何将这个循环向量化目前遇到一个问题,想比较一个向量里的每一个元素和另一个矩阵中所有元素,记录相等的个数,返回该向量长度的一个数组记录个数,不知道不用循环该怎么写? 展开
 我来答
alsoaoq
2016-08-28 · TA获得超过488个赞
知道小有建树答主
回答量:484
采纳率:66%
帮助的人:369万
展开全部
向量叉乘咯

假设一个长度为m的向量a,另一个长度为n的向量b。
c=a*b;%(m*n矩阵)
%把a进行边界延拓,变成重复性的矩阵d[1,2,3;1,2,3;1,2,3;1,2,3]这样。使和c的大小相同。具体命令忘记了

[qwe,qwe]=find(d-c.^2==0) %找出为0的个数,就是相等的个数
%大致思路是这样的,向量叉乘,避免多次循环
追问
不太明白这句话:[qwe,qwe]=find(d-c.^2==0),为什么要对c平方,以及两个返回值qwe什么含义。。。还有就是向量长度和矩阵大小没有关系怎么办,比如说
向量A大小是m x 1的,矩阵B大小是c x d的
追答
  1. 写错了,应该是d.^2。如果a中有个数在b中,那么在c中相当于那个数自身的平方。

  2. d是根据边界延拓来的(延拓谁,看自己需求)。平方,为的就是找出乘积结果为自己平方的那个数。

  3. find那个是找出为0的个数,返回的应该是0的位置和个数(顺序忘记了)。

  4. 应该有方便的方法可以避免延拓,找0操作。一下子想不出

  5. 矩阵B大小是c*d,你也可以向量化啊,变成1*(c*d)的向量

    就是提供个思路罢了。向量乘完就随意玩了

光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
匿名用户
2016-08-28
展开全部
vector x_dx1, matrix a_mxn,
squeeze(sum(sum( repmat(reshape(x,[1 1 d]), [m n]) == repmat(a,[1 1 d]) )))
更多追问追答
追问
第一行vector什么的是干什么?
哦懂了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式