[討論] 兩個矩陣運算

看板MATLAB作者 (業餘經濟學家)時間9年前 (2016/07/30 09:07), 編輯推噓0(0012)
留言12則, 4人參與, 最新討論串1/1
1. ex: a = [200 300 100]; b = [1 2 1]; 要產生 c = [ones(1,200) 2*ones(1,300) ones(1,100)]; 請問要怎麼用非 loop 的方式快速產生? a b 只是舉例 實際上數字大很多,且要做很多次 2. ex: a = [1 5 10 10 5 1]; b = [2 5]; 要產生 c = [6 , 25 , 1]; 就是 a 已經是 binned 過的資料了 b 是換一種方式去 bin a。 請問有沒有不用 loop 的方式。 一樣 a b 只是例子,實際資料大很多。 -- 兩個我都 google 過,前者可能因為關鍵字不對找不太到。 後者搜尋 rebin 找到的方法也都還是 loop。 目前我暫時都是用 loop 在做的,想問問有沒有高手有解的。 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 98.30.193.49 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1469840846.A.171.html

07/30 09:12, , 1F
1. arrayfun(@(a,b) b*ones(1,a), [200,300,100], [
07/30 09:12, 1F

07/30 09:12, , 2F
1,2,1],'uni',false)
07/30 09:12, 2F

07/30 09:14, , 3F
2看不懂
07/30 09:14, 3F

07/30 09:22, , 4F
樓上,他的2是巴斯卡三角形,b=[2,5]是指2項式展開的5次
07/30 09:22, 4F

07/30 09:28, , 5F
[6, 25, 1]看起來是把某幾個冪次的係數加總,但規則不明
07/30 09:28, 5F

07/30 09:35, , 6F
抱歉 2 沒那麼複雜 b 只是 rebin 的 edge
07/30 09:35, 6F

07/30 09:36, , 7F
a 是有 1個1 5個2 10個3 ... 的原始資料
07/30 09:36, 7F

07/30 09:37, , 8F
用 1 2 3 4 5 去 bin 過的 histogram
07/30 09:37, 8F

07/30 09:37, , 9F
我想要做更寬一點的 bin
07/30 09:37, 9F

07/30 09:42, , 10F
感謝一樓 arrayfunc 我太不熟了 慚愧
07/30 09:42, 10F

07/30 10:09, , 11F
2. temp=cumsum(a);c=temp(b) 不曉得是不是原PO要的
07/30 10:09, 11F

07/30 10:24, , 12F
很接近了 再 diff 過後處理一下就是我要的了 感謝
07/30 10:24, 12F
文章代碼(AID): #1Nc_tE5n (MATLAB)
文章代碼(AID): #1Nc_tE5n (MATLAB)