[討論] 小弟有個新手問題 如何找一個200x200x5矩陣最小值元素的位置已回收

看板MATLAB作者 (瘋狂假面)時間14年前 (2011/10/01 23:09), 編輯推噓1(109)
留言10則, 2人參與, 最新討論串1/1
剛剛成功以三個for迴圈得到若干個5x200x200的矩陣 想要將其中一個矩陣的最小值元素的位置找出來 並和另個矩陣的相同位置元素做比較 請問各位大大語法如何 q=1.6e-19; PS=73488034; %W/m^2 TA=300; %K TS=6000; %K K=8.6173324e-5; %eV/K H=4.135667516e-15; %eV.s C=3e8; %m/s EG2=zeros(5,1,1); UCI2=zeros(1,200,1); UIV2=zeros(1,1,200); Dlog=zeros(5,200,200); Efflog=zeros(5,200,200); EI=0.5; %eV for i=1:5 EG=1.45+0.01*i; %eV EG2(i,1,1)=EG; for j=1:200 UCI=((EG-EI-0.001)/200)*j; UCI2(1,j,1)=UCI; for k=1:200 UIV=((EI-0.001)/200)*k; UIV2(1,1,k)=UIV; A=(2*pi)/((H^3)*(C^2)); B=@(x)(x.^2)./(exp(x./(K*TS))-1); CC=@(x)(x.^2)./(exp((x-UCI-UIV)./(K*TA))-1); D=@(x)(x.^2)./(exp((x-UCI)./(K*TA))-1); E=@(x)(x.^2)./(exp((x-UIV)./(K*TA))-1); F=@(x) (B(x)-CC(x)); G=@(x) (B(x)-D(x)); HH=@(x) (B(x)-E(x)); Q1=quadgk(F,EG,inf); Q2=quadgk(G,(EG-EI),EG); Q3=quadgk(HH,EI,(EG-EI)); Difference=abs(Q3-Q2); Dlog(i,j,k)=Difference; I=A*(Q1+Q2); V=UCI+UIV; P=I*V*q; Efficiency=P/PS; Efflog(i,j,k)=Efficiency; end end end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.43.213.57

10/02 00:51, , 1F
一個是指? 幾乘幾算一個
10/02 00:51, 1F

10/02 01:09, , 2F
例如我得知最大值在(3,100,100) 這樣我就可以知道對應到
10/02 01:09, 2F

10/02 01:09, , 3F
i j k的迴圈次各是第幾次@@? 可是不知道要用什麼語法
10/02 01:09, 3F

10/02 01:12, , 4F
剛剛有試著用Ex=Eff(:) ans=find(Ex==min(Ex))可以和Dlog
10/02 01:12, 4F

10/02 01:14, , 5F
做比較 可是好像不能和EG UIV UCI等(i,1,1)(1,j,1)(1,1,K
10/02 01:14, 5F

10/02 01:16, , 6F
) 做比較 希望可以把最大值對應的i j k位置取得
10/02 01:16, 6F

10/02 13:52, , 7F
詳細做法我沒試過
10/02 13:52, 7F

10/02 13:53, , 8F
但試 max 可以找出一個維度最大直跟位置
10/02 13:53, 8F

10/02 13:53, , 9F
多做幾次 應該可以找到 i j k
10/02 13:53, 9F

10/02 13:53, , 10F
或者 配合reshape 應該會是個好辦法
10/02 13:53, 10F
文章代碼(AID): #1EXoqy8p (MATLAB)
文章代碼(AID): #1EXoqy8p (MATLAB)