I have while loop in following coding. it count data for a year. i am no able to take all one year data. It just shows last answer. I also tried double command it doesn't work too. Please help me how to take all one year data.
Thanks in advance.
clc;
clear;
clear all;
pv = xlsread('POWER PV');
p = size (pv,1);
load = xlsread('LOAD');
pemfc = xlsread('PEMFC 1');
l = size (pemfc,1);
i = 243.72; %(731 Wh)
h2 = 11698.56; %(48 Saat için h2 depolama)
for sun = 1:1:p ;
if load(sun,1) < pv (sun,1);
x = pv(sun,1)-load (sun,1);
elseif load(sun,1) > pv (sun,1);
y = load(sun,1) - pv (sun,1);
v = pemfc(find( pemfc > y(:,1) , 1 ) ); % very important .....
x = -v ;
while h2 > 0
g = h2 + (x(sun,1)*(243.71/731));
h2 = g;
h2;
end
else
x = 0;
end
n(sun,1) = double (x);
end

 채택된 답변

Star Strider
Star Strider 2019년 7월 7일

0 개 추천

I cannot run your code without your files.
However see if this solves the problem with your while loop:
k = 1;
while h2 > 0
g = h2 + (x(sun,1)*(243.71/731));
h2 = g;
h2v(k) = h2;
k = k + 1;
end
or, if ‘h2’ is not a scalar, save it as a cell array:
k = 1;
while h2 > 0
g = h2 + (x(sun,1)*(243.71/731));
h2 = g;
h2v{k} = h2;
k = k + 1;
end
Experiment to get the result you want.

댓글 수: 6

Thank you so much, It worked perfectly.
Star Strider
Star Strider 2019년 7월 7일
As always, my pleasure!
I also have a problem in x(sun,1) section it takes last value of x = -v but i have 8784 different value for x. I mean x(sun,1) have to take x values one by one. Please help me.
while h2 > 0
g = h2 + (x(sun,1)*(243.71/731));
h2 = g;
h2;
Your code is a bit confusing.
This assignment:
g = h2 + (x(sun,1)*(243.71/731));
will use whatever the value of ‘sun’ is in that iteration. Revising slightly my original Answer, perhaps:
while h2 > 0
g = h2 + (x(sun,1)*(243.71/731));
h2 = g;
h2v(sun) = h2;
end
is what you want.
If you want ‘h2v’ to be a column vector, assign it as:
h2v(sun,:) = h2;
Dear sir, in the following assignment x is calculating 8784 values. By the way sun in index and equal 1:1:p, here p is values which it takes from excel file.
elseif load(sun,1) > pv (sun,1);
y = load(sun,1) - pv (sun,1);
v = pemfc(find( pemfc > y(:,1) , 1 ) ); % very important .....
x = -v ;
in the folowing assignment i want h2 for every x value which i found above but it just take the last value of x.
k = 1;
while h2 > 0
g = h2 + (x(sun,1)*(243.71/731));
h2 = g;
h2v(k) = h2;
k = k + 1;
i also tried your last coding but didn't work. Please help me
If my previous code did not do what you want, I have no idea what the problem is. I have no other solutions. I do not have your data, or an example of what you want the result to be.
Guessing here.
Perhaps this is what you want:
elseif load(sun,1) > pv (sun,1);
y = load(sun,1) - pv (sun,1);
v = pemfc(find( pemfc > y(:,1) , 1 ) ); % very important .....
x = -v ;
if h2 > 0
g = h2 + (x(sun,1)*(243.71/731));
h2 = g;
h2v(sun) = h2;
end
else
It replaces your while loop with an if block.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by