[問題] matlab 向量運算問題已回收

看板MATLAB作者 (酷~!!)時間13年前 (2010/10/07 03:56), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/1
大家好 想請問一下 x = zeros(1, 10); y = [1 1 2 3 4 2 2 5 6 4 3 4]; x(y) = x(y) + 1 x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(8) x(9) x(10) x= 1 1 1 1 1 1 0 0 0 0 跟我想要得到的結果不一樣(下面黃色標示) 2 3 2 3 1 1 0 0 0 0 其中x(i)表示在y中i的個數, i = 1~10 目前我用for loop去跑,但想要獲得更快的加速 不知有何方法可以得到我想要的結果 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.1.151

10/07 04:08, , 1F
把 x(y)=x(y)+1 拆成 tmp=x(y)+1;x(y)=tmp(y); 會比較好懂
10/07 04:08, 1F

10/07 04:09, , 2F
tmp 會是 ones(1,12),之後再提取其中 1-6 (y) 存入 x
10/07 04:09, 2F

10/07 04:11, , 3F
這種有序 (部分變數先決) 運算除了迴圈外,可能可以透過
10/07 04:11, 3F

10/07 04:12, , 4F
移轉矩陣連乘來達到效果,但執行時間未必能縮短
10/07 04:12, 4F

10/07 04:52, , 5F
x=hist(y,[min(y):length(x)])
10/07 04:52, 5F

10/07 05:44, , 6F
謝謝樓上幾樓的討論:)
10/07 05:44, 6F

10/07 12:23, , 7F
天哪... 我居然沒看出這是 hist..... 囧rz
10/07 12:23, 7F
文章代碼(AID): #1ChDI7aC (MATLAB)