Doubt in matlab coding

I want to get the output of this concept:
that is, if Eg>Egm
then output is Ns =5,6,7
Otherwise if Eg<Egm
output as Nb=1,2,3
else Nsb=4
I want to get corresponding N values for each condition.How to get this?
a=3;b=8;
Eg=[50 100 150 175 200 250 300];
Egm=Mean(Eg);
P=[20 15 10 5 1 0.5 0.1]
for N=1:1:7
if Eg>Egm
% output as Ns
elseif Eg<Egm
% output as Nb
else
%output as Nsb
end
end
Based on this values,I want to compute following
Xs=(P(n)/a)-1;But value of P(n) is taken ony the value corresponding to Ns,that is 1,0.5,0.1
Xb=(P(n)/b)-1;But value of P(n) is taken ony the value corresponding to Nb,that is 20,15,10
Xsb=Eg; For the value Nsb
How this concept can be coded?

 采纳的回答

hello
here you are my friend, without a for loop
a=3;b=8;
Eg=[50 100 150 175 200 250 300];
Egm=mean(Eg);
P=[20 15 10 5 1 0.5 0.1];
m = length(Eg);
Ns = find(Eg>Egm);
Nb = find(Eg<Egm);
Nsb = (1:m);
Nsb(Ns) = [];
Nsb(Nb) = [];
Xs=(P(Ns)/a)-1;
Xb=(P(Nb)/b)-1;
Xsb=Eg(Nsb);

12 个评论

Ok sir.Its good and thank you.But I wanted to know how this concept go throuh a 'for loop'.Is this concept possible with for loop?
sure
a=3;b=8;
Eg=[50 100 150 175 200 250 300];
Egm=mean(Eg);
P=[20 15 10 5 1 0.5 0.1];
Ns = [];
Nb = [];
Nsb = [];
for ci=1:length(Eg)
if Eg(ci)>Egm
% output as Ns
Ns = [Ns ci];
elseif Eg(ci)<Egm
% output as Nb
Nb = [Nb ci];
else
%output as Nsb
Nsb = [Nsb ci];
end
end
Xs=(P(Ns)/a)-1;
Xb=(P(Nb)/b)-1;
Xsb=Eg(Nsb);
Thank you so much sir.Its so helpful.
my pleasure !
would you mind accepting my answer ?
tx
Sir,I have also want to compute these equations based on the above concept.Would you please answer this,how to code this equation?
Es=∑_(ci∊Ns)(〖〖Eg〗^ci - Xs〗)
Eb=∑_(ci∊Nb)(〖Xb -〖Eg〗^ci〗)
hello
hope I read correctly the equations - here added at the previous code :
a=3;b=8;
Eg=[50 100 150 175 200 250 300];
Egm=mean(Eg);
P=[20 15 10 5 1 0.5 0.1];
Ns = [];
Nb = [];
Nsb = [];
for ci=1:length(Eg)
if Eg(ci)>Egm
% output as Ns
Ns = [Ns ci];
elseif Eg(ci)<Egm
% output as Nb
Nb = [Nb ci];
else
%output as Nsb
Nsb = [Nsb ci];
end
end
Xs=(P(Ns)/a)-1;
Xb=(P(Nb)/b)-1;
Xsb=Eg(Nsb);
%% Es
Es = 0;
for k = 1:numel(Ns)
ci = Ns(k);
Es = Es + (Eg(ci).^ci - Xs(k));
end
Es
%% Eb
Eb = 0;
for k = 1:numel(Nb)
ci = Nb(k);
Eb = Eb + (Xb(k) - Eg(ci).^ci);
end
Eb
thank you
my pleasure !
Sir,I have one more doubt.I have to check a condition using while loop.
that is,
If X(k+1)-X(k)<=0.01 is true
then terminate
else continue
where k is the no of iterations.
a=3;b=8;
Eg=[50 100 150 175 200 250 300];
Egm=mean(Eg);
P=[20 15 10 5 1 0.5 0.1];
m = length(Eg);
Ns = find(Eg>Egm);
Nb = find(Eg<Egm);
Nsb = (1:m);
Nsb(Ns) = [];
Nsb(Nb) = [];
X=(P(Ns)/a)-1;
X=(P(Nb)/b)-1;
X=Eg(Nsb);
I want to get each iterative value.Would you please answer this?
hello
sure , no problem ,
this would be the code , but it's not clear to me what iterative computation you want to do - does it has a connection to the previous code I sent to you ?
for k = 1:numel(X)-1
dX = X(k+1)-X(k);
if dX <=0.01
break
else
X % my computation here
end
end
Thank you for your valuable effort.
Sir,it's the same code.
Here Xs,Xb,Xsb in the above code,I just put it as X for all.
I want to stop this iterative process until the error between previous iterative value and new value converges nearly to zero.That is the value of X in this code.
My doubt is how to make this code as a iterative computation and the know the values of X after each iteration.
hello again
I am not sure to understand how you want to have the X by iteration
the previous code (see below) is based on conditional statements (if, else,...) and I don't see how you can replace that logic with an iteration on X
maybe you can help me clarify this point
a=3;b=8;
Eg=[50 100 150 175 200 250 300];
Egm=mean(Eg);
P=[20 15 10 5 1 0.5 0.1];
Ns = [];
Nb = [];
Nsb = [];
for ci=1:length(Eg)
if Eg(ci)>Egm
% output as Ns
Ns = [Ns ci];
elseif Eg(ci)<Egm
% output as Nb
Nb = [Nb ci];
else
%output as Nsb
Nsb = [Nsb ci];
end
end
Xs=(P(Ns)/a)-1;
Xb=(P(Nb)/b)-1;
Xsb=Eg(Nsb);

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Use COM Objects in MATLAB 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by