Re: [問題] 迴圈矩陣運算已回收

看板MATLAB作者 (alen)時間16年前 (2009/06/01 09:07), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《heysimon (嘿~賽門)》之銘言: : 大家好 : 小弟最近在研究一個有限迴圈的運算(動態規劃問題) : e2=prob*index1; : for i=1:51 : for j=1:51 : index2(i,j)=max(index1(i,j),e2(i,j)); : if index2(i,j)==(index1(i,j)) : action2(i,j)=1;%執行 : else : action2(i,j)=0; : end : end : end : ---------------------------------------------------------------------- : e3=prob*index2; : for i=1:51 : for j=1:51 : index3(i,j)=max(index2(i,j),e3(i,j)); : if index3(i,j)==(index2(i,j)) : action3(i,j)=1;%執行 : else : action3(i,j)=0; : end : end : end : .............. : ======================================================================= : 說明: : 1.e2和e3都是由一個機率矩陣乘上指數矩陣所得到的期望值 : 2.藉由迴圈比較兩個矩陣同一格下的值(max)來製造出下一個指數矩陣 : 3.若新指數矩陣的值等於前一個指數矩陣的值,則等於1(表示執行) : 問題: : 1.如何利用eval指令創造所有的index矩陣?因為下一個depend on上一個所比較後的值? : 2.e2,e3,e4...要如何用eval創造其他期望值矩陣? : 不知道除了eval指令外,還有其他前輩們推薦的函數嗎? : 之後可能會用變數輸入,所以可能會需要很多期的矩陣...= = : 謝謝!! 你的index matrix是depend on index1的value ,所以index1和prob一決定了 之後的index matrix就固定了,是嗎? 我把程式貼出來,你測試看看 clc; clear; %這裡設定的prob index1 可能為不合理值 prob = randn(51,51); index1 = randn(51,51); e_number = 3; %e2,e3,e4... e的個數 for e_n = 2 : 2+e_number-1 eval ( ['e',num2str(e_n),'=prob*index',num2str(e_n-1),';']) for i=1:51 for j=1:51 eval ([' index',num2str(e_n),'(i,j)=max(index',num2str(e_n-1),... '(i,j),e',num2str(e_n),'(i,j)); ']) eval ([' value1 = index',num2str(e_n),'(i,j); ']) eval( [' value2 = index',num2str(e_n-1),'(i,j); ']) if value1==value2 eval(['action',num2str(e_n),'(i,j)=1;'])%執行 else eval(['action',num2str(e_n),'(i,j)=0;']) end end end end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.20.160

06/01 10:46, , 1F
感謝大大 ^^
06/01 10:46, 1F
文章代碼(AID): #1A8odHk2 (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1A8odHk2 (MATLAB)