How to take all output from while loop?
    5 views (last 30 days)
  
       Show older comments
    
    Mohammad Sulaiman Stanekzai
 on 7 Jul 2019
  
    
    
    
    
    Commented: Star Strider
      
      
 on 8 Jul 2019
            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 
0 Comments
Accepted Answer
  Star Strider
      
      
 on 7 Jul 2019
        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 Comments
  Mohammad Sulaiman Stanekzai
 on 8 Jul 2019
				
      Edited: Mohammad Sulaiman Stanekzai
 on 8 Jul 2019
  
			
		
  Star Strider
      
      
 on 8 Jul 2019
				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.  
More Answers (0)
See Also
Categories
				Find more on Loops and Conditional Statements in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
