# how to create a function from a script

2 views (last 30 days)
Niya Bedzheva on 18 Sep 2019
Edited: KALYAN ACHARJYA on 18 Sep 2019
hello, could anyone help with transforming this code into a matfile function so i can apply for different kind of data in my script.
y = drying_rate_1;
x = Zeit(~isnan(y));
y = y(~isnan(y));
[p,err] = polyfit(x,y,1);
fit_orig = polyval(p,x);
y_tilde = y - fit_orig;
quants = quantile(y_tilde, 100);
indices = [];
for i = 1:length(y_tilde)
if((y_tilde(i) > quants(2)) && (y_tilde(i) < quants(end - 1)))
indices = [indices; i];
end
end
x_filter = x(indices);
y_filter = y(indices);
[p,err] = polyfit(x_filter,y_filter,1);
y_fit = polyval(p,x_filter);
figure(3);
plot(x_filter, y_filter, x_filter, y_fit)

KALYAN ACHARJYA on 18 Sep 2019
Edited: KALYAN ACHARJYA on 18 Sep 2019
Is this? Pass the different input arguments (y=drying_rate_1) to the function, as a result you will get the different plots as per y data.
function test1(y)
x = Zeit(~isnan(y));
y = y(~isnan(y));
[p,err] = polyfit(x,y,1);
fit_orig = polyval(p,x);
y_tilde = y - fit_orig;
quants = quantile(y_tilde, 100);
indices = [];
for i = 1:length(y_tilde)
if((y_tilde(i) > quants(2)) && (y_tilde(i) < quants(end - 1)))
indices = [indices; i];
end
end
x_filter = x(indices);
y_filter = y(indices);
[p,err] = polyfit(x_filter,y_filter,1);
y_fit = polyval(p,x_filter);
figure(3);
plot(x_filter, y_filter, x_filter, y_fit)
end

Niya Bedzheva on 18 Sep 2019
thank you very much, helpful as always!
another quick question: how can i plot the filtered data for a few variables (for example for a few drying_rates) in one graph?
KALYAN ACHARJYA on 18 Sep 2019
Its my pleasure @Niya
Pass the input arguments y as a 1- D array (range of values), access y with proper indexing and plot accordingly