Re: [問題] 迴圈矩陣運算已回收
※ 引述《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
討論串 (同標題文章)
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章