Re: [問題] 請問如何將FOR迴圈改寫成矩陣運算已回收
※ 引述《hopebear (只想做自己)》之銘言:
: 小弟實力不夠深
: 厚請高手開示
: 程式碼如下
: 非常感謝
: 如果無法改寫 麻煩請推文一下
: M1、U、N0皆為1x1的正整數,x為1x100的正整數,L1~L4為1xM1-1的正整數
: 最主要是計算出 D(a,b,c,d) 迴圈內的值
: 但是 D(a,b,c,d)矩陣牽連到 s4(d)、C(a,b,c)與 B(a,b)與 A(a)內的值
: for i=1:100
: for a=1:1:M1-1
: for b=1:1:M1-1-L1(a)
: for c=1:1:M1-1-L1(a)-L2(b)
: for d=1:1:M1-1-L1(a)-L2(b)-L3(c)
這四個迴圈跑的長度不同
所以並不 "方正"
要硬做成矩陣也可以
補零就好
這樣會浪費很多空間
不過本來矩陣就是在浪費空間的
做出來的矩陣大小大概為 100*(M1-1)^N
N為迴圈的數目
在這個例子裡為4
不過看來你想做到16的樣子
不知道你的M1有多大
假設是11好了
那當N=4時
你的矩陣是10^6 Bytes ~ 1MB
當N=16時
你的矩陣是10^18 Bytes ~ 10^9GB ~ 10^6TB
所以應該做不下去....
就算不用矩陣
我也懷疑在你有生之年是不是跑得完十六個迴圈
: end
: end
: end
: end
: R(i)=log2(U)/(U^3)*sum(sum(sum(sum(D))));
: end
: 抱歉先前有些變數沒說明很清楚
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.54.153
推
06/24 14:16, , 1F
06/24 14:16, 1F
推
06/24 19:13, , 2F
06/24 19:13, 2F
→
06/24 19:13, , 3F
06/24 19:13, 3F
推
06/24 19:50, , 4F
06/24 19:50, 4F
推
06/24 19:56, , 5F
06/24 19:56, 5F
→
06/24 19:56, , 6F
06/24 19:56, 6F
→
06/24 20:00, , 7F
06/24 20:00, 7F
→
06/24 20:03, , 8F
06/24 20:03, 8F
→
06/24 20:06, , 9F
06/24 20:06, 9F
→
06/24 20:08, , 10F
06/24 20:08, 10F
推
06/24 20:55, , 11F
06/24 20:55, 11F
→
06/24 21:00, , 12F
06/24 21:00, 12F
推
06/25 02:45, , 13F
06/25 02:45, 13F
→
06/25 02:50, , 14F
06/25 02:50, 14F
→
06/25 02:51, , 15F
06/25 02:51, 15F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章