Need the function to run multiple times and store each data point for each input variable
Mostra commenti meno recenti
The fucntion calculates the time spent on an excursion for a customer, but now that i have twenty customers. how can i call the function to calculate the time for each customer and store the data in my work space?
function time = getTimePerTrip(plane, customer, altitude)
Fleet = plane;
if customer.Weight > Fleet.WeightCapacity
warning('Weight exceeds plane capacity');
end
if customer.Experience == "Beginner"
t_spent = 30;
elseif customer.Experience == "Experienced"
t_spent = 10;
end
time_ascend = altitude/Fleet.LiftRate; % time taken to reach altitude
time_decend = 5*time_ascend; % time taken to decend to the ground
time = t_spent + time_decend + time_ascend; % total time
end
5 Commenti
Geoff Hayes
il 10 Ago 2021
Tebogo - how is your customer data currently stored? In an array or as seperate variables? If each customer is a different variable then I suggest that you combine them into an array of customers. Then, loop over each customer in this array and save the time spent to a different array (whose size will be the same as your customer array).
Tebogo Makobe
il 10 Ago 2021
Pratik Chachad
il 10 Ago 2021
@Tebogo Makobe what is the format of your customer structure ? is it something like the following ?
customer (1x1 struct) with 20 fields, were each field is a customer (1x1 struct) with 2 fields (Weight and Experience)
Pratik Chachad
il 10 Ago 2021
If my previous assumption is true, Something like this should work.
function time_array = getTimePerTrip(plane, customer, altitude)
Fleet = plane;
% This will be the 20 customers
all_customers = fieldnames(customer);
%Store the time results in an array with same size as no of customers
time_array = zeros(length(all_customers),1);
for i=1:length(all_customers)
current_customer = customer.(all_customers{i});
if current_customer.Weight > Fleet.WeightCapacity
warning('Weight exceeds plane capacity');
end
if current_customer.Experience == "Beginner"
t_spent = 30;
elseif current_customer.Experience == "Experienced"
t_spent = 10;
end
time_ascend = altitude/Fleet.LiftRate; % time taken to reach altitude
time_decend = 5*time_ascend; % time taken to decend to the ground
time_array(i) = t_spent + time_decend + time_ascend; % total time
end
end
Tebogo Makobe
il 10 Ago 2021
Risposte (1)
Prahlad Gowtham Katte
il 17 Feb 2022
Hello,
I understood that you want to execute the same function for customer where it is a 1x20 struct array. The following function is a modified function which calculates time per customer and stores it as an array.
function alltime = getTimePerTrip(plane, customer, altitude)
Fleet = plane;
alltime=zeros(1,length(customer));
for i=1:length(customer)
current_customer=customer(i);
if current_customer.Weight > Fleet.WeightCapacity
warning('Weight exceeds plane capacity');
end
if current_customer.Experience == "Beginner"
t_spent = 30;
elseif current_customer.Experience == "Experienced"
t_spent = 10;
end
time_ascend = altitude/Fleet.LiftRate; % time taken to reach altitude
time_decend = 5*time_ascend; % time taken to decend to the ground
time = t_spent + time_decend + time_ascend; % total time
alltime(i)=time;
end
end
The following links can be helpful in learning more about structures.
Hope it helps
Categorie
Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!