Re: [問題] 迴圈中多組答案選出Max
謝謝celestialgod!
簡單來說,我有三個公式想要記算,分別是S1, F2, A2的算式
但各自公式成立之前都有一些不一樣的限制式需要被滿足,
如果限制式有 > 0才計算數值,不然就顯示0。
所以,
1. 在S1的前面應該要有:
if......(S1成立的條件式)
S1 = ......
else
S1 = 0
if......(F2成立的條件式)
F2 = ......
else
F2 = 0
if......(A2成立的條件式)
A2 = ......
else
A2 = 0
2. 這樣一輪下來應該就會有S1, F2, A2的值 (有數字或是0)
接著去比較在b = 0, D = 0.1的狀況下哪個是Max並且print name出來
然後迴圈後在b = 0.1, D = 0.1的狀況下再比較一次
...經過很多輪
然後迴圈後在b = 1, D = 1的狀況下再比較一次
3. 最後希望可以整理出在不同b跟D的組合下,什麼時候S1, F2, A2會是max
然後想要畫出一個圖http://i.imgur.com/NNTHMT9.jpg

像右邊圖,在不同的組合下面max的值是哪一個
不好意思再麻煩各位幫我解惑了 > <
謝謝!
※ 引述《celestialgod (天)》之銘言:
有些問題看得不是很懂...
有問題推文問再回你吧~"~
q=0.9;
a=0.9;
c0=0.2;
c1=0.01;
X=2^(1/2);
[b, D] = meshgrid(0:0.1:1, 0.1:0.1:1);
S1 = (q*(a+b(:))-2*c0).^2/(16*(q-c1));
F2 = (q^2*(2*D(:) + a - b(:)) .* (a*q - 2*c0 + b(:)*q))/(16*(c1 - q).^2);
A2 = ((X*q*(q*(a + b(:))-2*c0)).^2)/((4*(q-c1)).^3);
Y = [S1, F2, A2];
Y(q - b(:) > 0 & q*(q + b(:)) - 2*c0 > 0) = 0;
if q - c1 <= 0
Y(:) = 0;
end
[Z, code] = max(Y, [], 2);
names = {'S1', 'F2', 'A2'};
maxNames = arrayfun(@(x) names{x}, code, 'uni', false);
儲存的話,要同時存chr跟數字的話,就用open跟fprintf解決吧,網路上很多
存數字就用dlmwrite就好
※ 引述《kevinjean (Kevin)》之銘言:
: 各位版上前輩好,
: 我想要請教幾個問題希望大家可以幫助我 > <
: ---
: q=0.9, a=0.9, c0=0.2, c1=0.01, X=2^(1/2)
: for b=0:0.1:1
: for D=0.1:0.1:1
: if q - b > 0 & q - c1 > 0 & q*(q + b) - 2*c0 > 0
: S1 = (q*(a+b)-2*c0)^2/(16*(q-c1))
: F2 = (q^2*(2*D + a - b)*(a*q - 2*c0 + b*q))/(16*(c1 - q)^2)
: A2 = ((X*q*(q*(a + b)-2*c0))^2)/((4*(q-c1))^3)
: else
: S1 = 0
: F2 = 0
: A2 = 0
: end
: end
: Y = [S1 F2 A2]
: Z = max(Y)
: fprintf('Max = \n',Z)
: end
: ---
: 總而言之我希望調控b跟D分別跑出一組一組的S1, F2, A2,
: 並且在每一組內找出這三個中最大的值,顯示對應的代號
: 所以應該會有10 x 9 = 90組Max的值,
: 可能像是
: Max = S1
: Max = S1
: Max = S1
: Max = S1
: Max = F2
: Max = F2
: Max = A2
: Max = A2
: Max = A2
: Max = A2
: Max = A2
: Max = A2
: ...
: 目前想請大家幫的忙有幾個:
: 1. 我無法在每一個b - D組合得到一個Max值
: 跑完之後他會先出現很多組S1, F2, A2,
: 然後在最後一組之後出現:
: Y = [xxx yyy zzz]
: Z = yyy (假設是最大值)
: 而不是每一筆資料都是一個Max值
: 2. 我無法得到代號,而是數值
: 我知道很直覺的我的矩陣裡面放的是S1, F2, A2計算出來的值,
: 但我應該要怎麼寫才可以讓Max出來的是代號呢?
: 3. 我無法儲存最後得到的Max值
: 假設順利得到了90組Max值,我要怎麼儲存他?
: 因為目前好像就是會在Matlab出現90行的文字,
: 但我希望可以把它儲存為
: (b1, D1, Max1)
: (b2, D1, Max2)
: (b3, D1, Max3)
: ...
: 再請大家幫助我了,謝謝各位 > <
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.74.87
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1449458146.A.187.html
※ 編輯: celestialgod (140.109.74.87), 12/07/2015 11:18:04
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.250.42
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1449461619.A.74F.html
※ 編輯: kevinjean (140.113.250.42), 12/07/2015 12:14:06
→
12/07 12:17, , 1F
12/07 12:17, 1F
→
12/07 12:18, , 2F
12/07 12:18, 2F
→
12/07 12:18, , 3F
12/07 12:18, 3F
→
12/07 12:21, , 4F
12/07 12:21, 4F
→
12/07 12:21, , 5F
12/07 12:21, 5F
→
12/07 12:22, , 6F
12/07 12:22, 6F
→
12/07 12:32, , 7F
12/07 12:32, 7F
→
12/07 13:07, , 8F
12/07 13:07, 8F
→
12/07 13:07, , 9F
12/07 13:07, 9F
→
12/07 13:19, , 10F
12/07 13:19, 10F
→
12/07 13:19, , 11F
12/07 13:19, 11F
→
12/07 13:20, , 12F
12/07 13:20, 12F
→
12/07 13:23, , 13F
12/07 13:23, 13F
推
12/07 13:38, , 14F
12/07 13:38, 14F
→
12/07 13:39, , 15F
12/07 13:39, 15F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章