Info
Questa domanda è chiusa. Riaprila per modificarla o per rispondere.
How do i substitute data from a list to a summation
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hello I want to substitute multiple data from an excel worksheet(Vi,Xi) to this equation:
E := sum((V[i]-xi[i]*((1+b)/(b*xi[i]^4+1))^((1+b)/(4*b)))^2, i = 1 .. 106);
Do i need to create a loop (i=i+1)or can be done by using a simple function?
0 Commenti
Risposte (1)
Star Strider
il 15 Ott 2014
It can be done essentially as you wrote it, without a loop, using element-wise operations:
V = randi(20,10,1); % Create Data
xi = randi(20,10,1); % Create Data
b = 5; % Create Data
E = sum(V - xi.*((1+b)./(b.*xi.^4+1)).^((1+b)./(4*b))).^2;
7 Commenti
Star Strider
il 16 Ott 2014
I thought so after thinking about it later, but I wanted to be certain.
The easiest way to estimate ‘b’ is to use the fminsearch function:
fidi = fopen('BLADE.txt');
D = textscan(fidi, '%f %f', 'HeaderLines',1);
xi = D{1};
V = D{2};
Vest = @(b,xi) xi.*((1+b)./(b.*xi.^4+1)).^((1+b)./(4*b)); % Model
E = @(b) sum(V - xi.*((1+b)./(b.*xi.^4+1)).^((1+b)./(4*b))).^2; % Cost Function
[b,Eval] = fminsearch(E, 1); % Estimate ‘b’
figure(1)
plot(xi, V, '+b')
grid
hold on
plot(xi, Vest(b,xi), '-r', 'LineWidth',1)
hold off
xlabel('Xi')
ylabel('V')
The code first imports your data, and assigns variables. I created the objective function ‘Vest’ from ‘E’, then created ‘E’ as an ‘anonymous function’ that I could use with fminsearch to estimate ‘b’ and also determine the value of ‘E’ at the minimum, since you want that. I then plotted ‘Vest’ with your data in the figure. It appears to be a good fit. The estimated value for ‘b’ here is 1.4772.
Does this do what you want?
Questa domanda è chiusa.
Vedere anche
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!