24小时热门版块排行榜    

查看: 744  |  回复: 12
当前主题已经存档。

woshilsh

荣誉版主 (职业作家)

优秀版主

[交流] 【求助】这个函数简单但不好懂啊!(重奖正确答案)【已完成】

>> D=[1 2;2 3;2 1;3 5]

D =

     1     2
     2     3
     2     1
     3     5

>> [d,idx]=min(D,[],2)

d =

     1
     2
     1
     3


idx =

     1
     1
     2
     1

>> M=accumarray(idx,1,[4,1])

M =

     3
     1
     0
     0


这是matlab中的一个函数,我写程序的时候用到他的功能,但看了帮助,大致功能知道了,可老搞不定具体的含义。

大家帮我看看,最后一个语句M=accumarray(idx,1,[4,1])这里得出的M是什么意思?为什么啊?特别是第2个参数1表示什么意思呢?

主要是最后一句不懂意思,M中每一行表示什么意思?如果把第二个参数改为2,结果就变了,这又是啥含义呢?

[ Last edited by nono2009 on 2009-9-25 at 07:17 ]
回复此楼
[center][url=http://www.91cool.net/][img]http://id.91cool.net/sign/?name=小木虫印&say=各位版主辛苦了![/img][/url][/center]
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

woshilsh

荣誉版主 (职业作家)

优秀版主

新问题又出来了!
>> idx=[1;2;5;4]

idx =

     1
     2
     5
     4

>> d=[10;11;12;13]

d =

    10
    11
    12
    13
>> sumd=accumarray(idx,d,[5,1])

sumd =

    10
    11
     0
    13
    12
这个又当如何解释呢?
[center][url=http://www.91cool.net/][img]http://id.91cool.net/sign/?name=小木虫印&say=各位版主辛苦了![/img][/url][/center]
2楼2009-05-27 14:50:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hyk2006

木虫 (小有名气)

★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
woshilsh(金币+5,VIP+0):恩,这样理解可以,但是如果val=2该怎么理解呢?有空的话回复下,谢谢了兄弟 5-27 16:20
M=accumarray(idx,1,[4,1])
对val=1,subs=idx做accumarray,返回一个4行1列的向量,
因为val全是1,idx有三个1,所以M的第一个值是3,
idx有一个2,所以M的第二个值是1,其它的是0.
相当于对1做累加运算,写成向量可能更容易看懂。

2楼的问题类似,不用多解释了吧,呵呵
3楼2009-05-27 15:10:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

woshilsh

荣誉版主 (职业作家)

优秀版主

还是不太明白,按照你的想法理解2楼的问题还是有点模糊!
[center][url=http://www.91cool.net/][img]http://id.91cool.net/sign/?name=小木虫印&say=各位版主辛苦了![/img][/url][/center]
4楼2009-05-27 16:23:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sitonyl

铁杆木虫 (文坛精英)

★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
woshilsh(金币+5,VIP+0):恩,谢谢帮助,呵呵,常来! 5-27 21:49
二维的情况比较好理解,以2维为例说明:
M=accumarray(sub,id,[m,n])
其中sub为m1x2矩阵,id为m1维列向量。
M为mxn的矩阵,可以把它想象成全零的矩阵。把sub中每一行(如第i行)看成M中的行、列的位置,把对应的id中第i行填入M中即可。如果每一个位置有多个元素填入,则相加。
例子:
sumd=accumarray([1 2;2 2;2 2;3 3],[1 5 100 3]',[5 6])

sumd =

     0     1     0     0     0     0
     0   105     0     0     0     0
     0     0     3     0     0     0
     0     0     0     0     0     0
     0     0     0     0     0     0

[ Last edited by sitonyl on 2009-5-27 at 19:31 ]
zz
5楼2009-05-27 19:21:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sitonyl

铁杆木虫 (文坛精英)

对应于你的例子,是向量情况,则更简单一些。
zz
6楼2009-05-27 19:23:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hyk2006

木虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
accumarray函数对向量的解释:
idx是d里面元素的位置标号,如果标号有重复,则把该位置标号对应的d中元素累加重复的次数,放到对应的位置。

1楼d=1,idx有三个1,所以把1加三次,放到第一个位置,有一个2,所以把1加一次,放到第二个位置,idx没有其他的位置标号,所以后两个位置是0.
2楼idx只有一个1,位置1对应10,所以加一次,得到第一个位置是10,位置2,4,5类推。
最后一个是12,应该是默认的,如果结果的维数大于d的维数,则把d中没有取过的元素放到最后,如果是结果是【6,1】的,最后一个元素是0.

矩阵的话会更麻烦。
以上均是个人理解,仅供参考。欢迎高手交流
7楼2009-05-27 19:50:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sitonyl

铁杆木虫 (文坛精英)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by hyk2006 at 2009-5-27 19:50:
accumarray函数对向量的解释:
idx是d里面元素的位置标号,如果标号有重复,则把该位置标号对应的d中元素累加重复的次数,放到对应的位置。

1楼d=1,idx有三个1,所以把1加三次,放到第一个位置,有一个2,所 ...

“最后一个是12,应该是默认的....”
好像有些问题呀
zz
8楼2009-05-27 20:08:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hyk2006

木虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
可能我没说清楚,2楼的要得到5×1的向量,而idx只有4个位置标号,所以把没有选过的元素12放在第五个位置。如果要得到6×1的向量,那么第五个位置是12,第六个是0。这样的结果可能是系统默认的设置。
9楼2009-05-27 21:17:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sitonyl

铁杆木虫 (文坛精英)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
woshilsh(金币+3,VIP+0):感谢,以后常来哈! 5-28 00:36
引用回帖:
Originally posted by hyk2006 at 2009-5-27 21:17:
可能我没说清楚,2楼的要得到5×1的向量,而idx只有4个位置标号,所以把没有选过的元素12放在第五个位置。如果要得到6×1的向量,那么第五个位置是12,第六个是0。这样的结果可能是系统默认的设置。

我觉得是这样的:
因为
idx=[1;2;5;4]

d=[10;11;12;13]

idx的第3个元素为5,所以对应的是结果的第5列,即结果的第5列应该是d的第3个元素即12,所以结果的第5列为12。并不是应为12没有选过。
zz
10楼2009-05-27 22:37:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 woshilsh 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +5 jCd0dEvKHShX 2026-08-29 8/400 2026-08-31 02:45 by hZiFeudZyoGR
[硕博家园] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 jCd0dEvKHShX 2026-08-29 6/300 2026-08-31 02:35 by hZiFeudZyoGR
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 jCd0dEvKHShX 2026-08-29 5/250 2026-08-31 02:34 by hZiFeudZyoGR
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +6 gy1nBQXYQJqL 2026-08-29 8/400 2026-08-31 01:26 by hZiFeudZyoGR
[博后之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +7 gy1nBQXYQJqL 2026-08-29 9/450 2026-08-31 01:15 by hZiFeudZyoGR
[公派出国] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +5 gy1nBQXYQJqL 2026-08-29 6/300 2026-08-31 01:07 by hZiFeudZyoGR
[论文投稿] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +6 gy1nBQXYQJqL 2026-08-29 8/400 2026-08-31 00:54 by hZiFeudZyoGR
[硕博家园] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +7 ASdOkHsho7FD 2026-08-28 12/600 2026-08-31 00:31 by hZiFeudZyoGR
[基金申请] 投票:  有多少人是今天查系统知道结果的? +17 爱看书的可乐 2026-08-26 19/950 2026-08-30 22:24 by xiangy672
[基金申请] 有没有仍没收到信息的 +7 德尚中行 2026-08-27 8/400 2026-08-30 20:52 by purplejack
[考博] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 4FFAWE8HcgUD 2026-08-29 4/200 2026-08-30 20:40 by hZiFeudZyoGR
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 G6APbkg8SA6w 2026-08-29 5/250 2026-08-30 18:51 by hZiFeudZyoGR
[论文投稿] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +5 ASdOkHsho7FD 2026-08-28 6/300 2026-08-30 17:25 by hZiFeudZyoGR
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +6 gdd2018 2026-08-28 11/550 2026-08-30 08:58 by 超级无敌华子
[基金申请] 中青基了要发朋友圈吗? +4 349506619 2026-08-28 4/200 2026-08-29 22:41 by alongwaytogo
[基金申请] 系统查不到 +11 董八千 2026-08-26 11/550 2026-08-28 18:06 by Leogzhya
[基金申请] 基金不中,共勉 +11 eulota 2026-08-26 11/550 2026-08-28 14:22 by 火星超人xi
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +5 yuleib84 2026-08-26 6/300 2026-08-28 00:02 by yudaoqian88
[文学芳草园] 梦想 +3 myrtle 2026-08-26 3/150 2026-08-27 10:01 by angelyueyi
[基金申请] 能否退出参与的面上项目解除限项 +23 koalala 2026-08-24 26/1300 2026-08-26 14:29 by 宝贝虫子
信息提示
请填处理意见