fprintf a solution with two variables, one from a vector

2 visualizaciones (últimos 30 días)
Nick Fleischer
Nick Fleischer el 12 de Nov. de 2018
Editada: Stephen23 el 12 de Nov. de 2018
Trying to fprintf two variables for a problem including a variable from a row vector:
% Create a vector of wind velocities using the vector notation V = [start: step: stop] such that your velocity % vector V = [5, 7, 9, 11, 13] m/s. V = [5:2:13];
% Determine the amount of power that each wind turbine can produce for a given wind speed. p = 1.225; % kg/m^3 a1 = 10; % WT #1 (m^2) a2 = 100; % WT #2 (m^2) a3 = 200; % WT #3 (m^2)
% Power = (3/20)*p*A*V^3 % The power output of each size turbine (a1, a2, a3) is measured at each speed according to vector V.
P1 = (.3)*(1/2)*p*a1*(V.^3); fprintf('\nThe power produced by a 10m^2 wind turbine at velocity %1.0f is %.2f',V,P1)
The power produced by a 10m^2 wind turbine at velocity 5 is 7.00 The power produced by a 10m^2 wind turbine at velocity 9 is 11.00 The power produced by a 10m^2 wind turbine at velocity 13 is 229.69 The power produced by a 10m^2 wind turbine at velocity 630 is 1339.54 The power produced by a 10m^2 wind turbine at velocity 2446 is 4036.99
How can I show V(1,1) [5] is equal to 229.69 from the formula? How can I show V(1,2) [7] is equal to 630.26 from the formula? etc, etc.
Thanks!

Respuestas (1)

Stephen23
Stephen23 el 12 de Nov. de 2018
Editada: Stephen23 el 12 de Nov. de 2018
Solution:
fmt = 'The power produced by a 10m^2 wind turbine at velocity %1.0f is %.2f\n';
fprintf(fmt,[V;P1])
prints:
The power produced by a 10m^2 wind turbine at velocity 5 is 229.69
The power produced by a 10m^2 wind turbine at velocity 7 is 630.26
The power produced by a 10m^2 wind turbine at velocity 9 is 1339.54
The power produced by a 10m^2 wind turbine at velocity 11 is 2445.71
The power produced by a 10m^2 wind turbine at velocity 13 is 4036.99
Explanation: the fprintf operator is very low-level. It does not do anything magic, like matcing up corresponding elements from multiple input arguments. It simply starts from the first one and when it has finished with that it moves on to the second one, etc. With multiple input arguments A1, A2, etc., it basically does this:
fprintf('...',[A1(:);A2(:);...])
And you can see that this simply gives the data from A1 first (in columnwise order), then the data from A2, etc.. To get the sequence that you want you need to concatenate the data into one array first, and ensure that the data is in the correct order when it is accessed columnwise. So what I showed you is equivalent to this:
A = [V;P1]
fprintf('...',A(:))
which, when you look at the elements of A, gives the data in the required order for your format string.

Categorías

Más información sobre Wind Power en Help Center y File Exchange.

Productos


Versión

R2015a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by