How to create a vector with elemts being the outputs of a function

2 views (last 30 days)
Grigorios Chatziandreou on 29 Apr 2021
Commented: Matt J on 29 Apr 2021
Hello, we are given the ready function 'floris' which gives out power and speed at a specific location. Speed output is a numeric value. I want to create a vector (or just a set of values) named 'speeds' that has as elements, all the different speeds for all the location. My final purpose is to plot x-location vs speed.
To take it to the next level, I would like to be able to do simultaneously the same for y location. If I could do a 3d plot of [x, y] location that gives the speed output would be ideal. Have no idea how to do this though. Height stays fixed at 0.3m. x has to go from 10m to 14.16m and y from -0.54m to +0.54m.
Any help would be much appreciated and thank you in advance
for x=10:0.02:14.160
location = [x 0 0.3];
[power,speed]=floris(wind_speed,density,wind_direction,turbine_centre,yaw_angle,diameter,powercurve,location);
speeds(1,x)=speed
end

Matt J on 29 Apr 2021
Edited: Matt J on 29 Apr 2021
One way,
fun=@(x) floris(wind_speed,density,wind_direction,...
turbine_centre,yaw_angle,diameter,powercurve,[x 0 0.3]);
[power,speed]=arrayfun(fun, 10:0.02:14.160);
Grigorios Chatziandreou on 29 Apr 2021
hey, i tried it but did not seem to work
Matt J on 29 Apr 2021
Here is a simpler, made-up example, just to illustrate what should happen:
fun=@(x) deal( sum([x,0,0.3]) , mean([x,0,0.3])) ;
[power,speed]=arrayfun(fun, 10:0.02:14.160);
whos power speed
Name Size Bytes Class Attributes power 1x209 1672 double speed 1x209 1672 double