2013-08-01 3 views
0

У меня есть формула здесь:Finding лучшее сочетание MATLAB с формулой

E = T*(1-W)*U + X*W*F + S*W*C*D 

Lets говорят T, W, S, X и D все константы, а U, F и C являются переменными и F и C являются связанные друг с другом.

Теперь моя цель - найти различные значения E на основе различных комбинаций U, F и C.

Например у меня есть значения для этих переменных:

U = 2.02, 1,  3,  4 
F = 6,  4,  3.03 
C = 0.5, 0.4, 0.3 

отмечая, что F и C связаны друг с другом, например, когда F=6 затем C=0.5 или если F=4, то C=0.4 и так далее.

Может ли кто-нибудь помочь мне выполнить это на matlab, чтобы Matlab вычислил значение для E для всех возможных комбинаций переменных.

+0

Вы хотите сказать, первый хотите сделать что-то со всеми первыми значениями, чем со всеми второй и т.д.? –

ответ

2

Я нашел отношение

F = 10 * (ехр (С) -1.06);

данные. Я не знаю, согласуется ли это с вашими ожиданиями. Независимо от того, как только вы выбираете диапазон C, F и U и размер шагов к образцу отдельных переменных, можно вычислить фазовое пространство вашей функции, как это:

%%%% modify me %%%% 
T = 1; 
W = 1; 
S = 1; 
X = 1; 
D = 1; 
%%%%%%%%%%%%% 

Nstep = 10; 

U = [2.02, 1, 3 , 4]; 
F = [6, 4, 3.03]; 
C = [0.5, 0.4, 0.3]; 

Umin = min(U); 
Umax = max(U); 
Cmin = min(C); 
Cmax = max(C); 
Fmin = min(F); 
Fmax = max(F); 

Ustep = (Umax-Umin)/Nstep; 
Fstep = (Fmax-Fmin)/Nstep; 
Cstep = (Cmax-Cmin)/Nstep; 

U = [Umin:Ustep:Umax]; 
C = [Cmin:Cstep:Cmax]; 
F = [Fmin:Fstep:Fmax]; 
[C,F,U] = MESHGRID(C,F,U); 

E = T.*(1-W).*U + X.*W.*F + S.*W.*C.*D; 

Если остальные переменные Т , W, S, X, D не являются скалярами, вам нужно будет отрегулировать размер массивов, удерживающих их.

+0

** жирный ** спасибо! –

+0

@JordanDavid Пожалуйста, не забудьте нажать на галочку ответа, который будет работать для вас! –

1

Я не уверен, правильно ли я понял ваш вопрос. Если вы просто хотите, чтобы перебрать 3 переменных с известными значениями, где два из них коррелируют, вы можете использовать, например:

U = [2.02 1 3 4]; 
F = [6 4 3.03]; 
C = [0.5 0.4 0.3]; 
T = 1; W = 2; S = 3; X = 4; D = 5; %example values 

for j=1:size(U,2) 
    for i=1:size(F,2) 
     E = T*(1-W)*U(j) + X*W*F(i) + S*W*C(i)*D; disp (E); 
    end 
end 

В противном случае, мы должны, вероятно, немного больше информации о соотношении между F и C.

+0

** жирный ** спасибо! –

0

Я думаю, что вы хотите это сделать, оно не очень оптимизировано, но должно быть легко понятным.

U = [2.02 1 3 4]; 
F = [6 4 3.03]; 
C = [0.5 0.4 0.3]; 
[W, T, D, X, S] = deal(1); %Assign dummy values for now 
minLength = min(min(numel(U),numel(F)),numel(C)); %As U is not the same length as F and C here 
E = zeros(minLength,1); 
for k = 1:minLength 
    E(k) = T*(1-W)*U(k) + X*W*F(k) + S*W*C(k)*D; 
end 

Вы можете теперь найти наименьшее значение, выполнив:

find(E == min(E)) 
+0

, если 'U' не связан, ответ @ user2042297 должен вам помочь. –

Смежные вопросы