Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

How do i substitute data from a list to a summation

조회 수: 1 (최근 30일)
Georgios Panagiotou
Georgios Panagiotou 2014년 10월 15일
마감: MATLAB Answer Bot 2021년 8월 20일
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?

답변 (1개)

Star Strider
Star Strider 2014년 10월 15일
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
Georgios Panagiotou
Georgios Panagiotou 2014년 10월 16일
Yes I am trying to do a least-squares nonlinear fit for the parameter b.
diff(E,b)=0 I want to find the parameter b and afterwards I wil substitute it to E to find the E
Star Strider
Star Strider 2014년 10월 16일
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?

이 질문은 마감되었습니다.

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by