Help solving an error
    1 Ansicht (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Alex
 am 8 Dez. 2014
  
    
    
    
    
    Kommentiert: Star Strider
      
      
 am 9 Dez. 2014
            Here is the code:
load PollutionData.txt;
array = PollutionData(:,1); %#ok<NODEF>
timearray = (0:.5:250);
timearray = reshape(timearray,[],1);
constant = reaeration(array);
array(3,:) = array(3,:) .* 0.001076; %conversion
array(6,:) = array(6,:) .* 0.0002778; %conversion
resultarray = deOxygen(array , timearray, constant);
plot(timearray(:,1) , resultarray(:,1))
return
function constant = reaeration(array)
constant = ((array(5,:) * array(3,:)) ^ 0.5) / (array(4,:) .^ 1.5);
return
function resultarray = deOxygen(array , timearray, constant)
resultarray = zeros(1,1000);
for a = (0:.5:250) 
resultarray(a) = (((array(6,:) * array(2,:)) / (constant - array(6,:))) * (exp(-array(6,:) * timearray(a) * 3600) - exp(-constant * timearray(a) * 3600))) + (array(1,:) * exp(-constant * timearray(a) * 3600));
end
return
I'm getting in error in the deOxygen function at the "resultarray(a) = (((..." portion. Also, the two following errors also appear:
Attempted to access timearray(0); index must be a positive integer or logical.
Error in myHW7 (line 15) resultarray = deOxygen(array , timearray, constant);
And I have no idea why. Any ideas?
Thanks
0 Kommentare
Akzeptierte Antwort
  Star Strider
      
      
 am 8 Dez. 2014
        In ‘deOxygen’, define the ‘a’ vector first:
a = (0:.5:250);
then set the loop up as:
for k1 = 1:length(a)
and replace the ‘(a)’ subscripts with ‘(k1)’ subscripts (or whatever loop counter variable you choose).  MATLAB does not allow subscripts to be negative, zero, or non-integers.
Also, I’m not sure what ‘a’ is doing. You don’t use it anywhere in ‘deOxygen’ that I can find.
6 Kommentare
  Star Strider
      
      
 am 9 Dez. 2014
				Did you implement the array element subscript idea I suggested in my initial Answer? (You need to change all the ‘(a)’ subscripts to ‘k1’ or some variable of your choice. Keeping them as they are now simply will not work.) If so, did it at least solve part of the problem?
There are other potential problems in the way you are calculating ‘resultarray’ even with the subscripts corrected, but until you fix the subscripts it’s impossible to say what other problems may exist.
You’re currently doing matrix (as distinguished from element-wise) operations to create ‘resultarray’. This may or may not be appropriate, depending on what your ‘array’ variables are and what you want to calculate from them.
Weitere Antworten (1)
  Image Analyst
      
      
 am 8 Dez. 2014
        Because indexes start with one. Why don't you do this:
index = 1;
for a = (0:.5:250) 
      resultarray(index) =..........
      index = index + 1;
      % more code......
end
Or else this:
aArray = 0:.5:250;
for index = 1 : length(aArray)
      a = aArray(index); % Extract the value of a that we need.
      resultarray(index) =..........
      % more code......
end
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


