User defined function to output matrix

20 views (last 30 days)
I am in need of some help with a user defined function. I have it so it will output a column array of zeros however I need to function to fill the array dependant on a number of conditions and I have no idea how to get from where I am to where I need to be.
function [Q] = O_R_B(H)
%Operating rule B for varying dam heights
% Determining the usage rates for the dam for different dam heights
H_max = 30.9; %dam height in m (scaled 1:300)
Q_out = 138; %normal output rate
Q = zeros(length(H),1);
for k = 1:length(H)
if H >= 1*H_max;
Q = string('issue warning');
elseif H >= 0.9*H_max;
Q(k) = 4 * Q_out;
elseif H < 0.9*H_max & H>= 0.85*H_max;
Q(k) = 2* Q_out;
elseif H < 0.85*H_max & H>= 0.4*H_max;
Q(k) = Q_out;
elseif H < 0.4*H_max & H>= 0.2*H_max;
Q(k) = 0.5*Q_out;
else H< 0.2*H_max;
Q(k) = 0;
end
end
end

Accepted Answer

James Tursa
James Tursa on 23 Sep 2017
Edited: James Tursa on 23 Sep 2017
You need to index H also in your code. E.g.,
if H(k) >= 1*H_max;
error('H too large');
elseif H(k) >= 0.9*H_max;
Q(k) = 4 * Q_out;
:
etc
  6 Comments
Rhys Webb
Rhys Webb on 23 Sep 2017
You sir are a life saver I have been looking at this for 2 days trying to figure it out.
James Tursa
James Tursa on 23 Sep 2017
Edited: James Tursa on 23 Sep 2017
You could issue a warning and fill the element with NaN. E.g.,
if H(k) >= 1*H_max;
Q(k) = NaN;
warning(sprintf('H(%d) element too large',k));

Sign in to comment.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices 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!