Why is my code showing output as an array instead of single value?
5 ビュー (過去 30 日間)
古いコメントを表示
Hello, I am new to MATLAB, I have written a code where I want to find the value of A for the given inputs, but the value is being represented as an array, can anyone help?
Here is the code
%A check for different hydrofoil span
I = input("Body moment of inertia? in kgm^2");
l = input("Length of body? in m ");
b = input("Breadth of body? in m ");
w = input("Width of body? in m ");
d = input("diameter? in m ");
h = input("input length of cylindrical cable? in m ");
fl = input("Length of fin? in m ");
fb = input("Breadth of fin? in m ");
lf = input("Length of application of fin force? in m ");
bf = input("Breadth of application of fin force? in m ");
lc = input("Length of application of cable force? in m ");
bc = input("breadth of application of cable force? in m ");
lt = input("Length of application of towing force? in m");
bt = input("Breadth of application of towing force? in m");
xcm = input("center of gravity x?");
ycm = input("center of gravity y?");
beta = input("angle between position vector and fin lift? in deg ");
AR = fl/fb;
Cdc = input("Drag coefficient cable? ");
%Clc = input("Lift coefficient cable? ");
Cd = input("Drag coefficient body? ");
Cl = input("Lift coefficient body? ");
%Cdf = input("Drag coefficient fin? ");
Clf = 1/((1/(2*pi*beta)+(1/(pi*AR)+(1/(2*pi*(AR^2)))))); %Lift coefficient of fin?
rhow = input("Density? in kg/m^3 ");
rhob = input("Body density?");
v = input("Towing speed? in m/s ");
pi = 3.14;
Vb = l*b*w;
Mb = rhob*Vb; %Body mass
Mwb = rhow*Vb;
Vf = fl*fb*t;
Mf = rhob*Vf; %fin mass
Mwf = rhow*Vf;
Vc = pi*((d/2)^(2))*h;
Mc = rhob*Vc; %towed array mass
Mwc = rhow*Vc;
B = (Mwb+2*Mwf+2*Mwc)*9.81;
W = (Mb+2*Mf+2*Mc)*9.81;
Dc = 0.5*Cdc*rhow*(v^2)*(2*pi*(d/2)*h);
%Lc = 0.5*Clc*rhow*(v^2)*(2*pi*(d/2)*h);
Db = 0.5*Cd*rhow*(v^2)*l*b;
Lb = 0.5*Cl*rhow*(v^2)*w*b;
Lf = 0.5*Clf*rhow*(v^2)*fl*fb;
%Df = 0.5*Cdf*rhow*(v^2)*fl*fb;
theta = atand((Lb+2*Lf+B-W)/(Db+2*Dc)); %angle between horizontal and T? in deg
T = (2*Dc+Db)/cosd(theta);
A = (-2*Dc*bc +2*Lf*lf + (B-W)*ycm - T*lt*sind(theta) - T*bt*cosd(theta))/I;
The output theta, T and A are represented as an array
theta =
Columns 1 through 20
47.5198 45.9120 44.2053 42.3936 40.4710 38.4317 36.2704 33.9824 31.5644 29.0142 26.3316 23.5188 20.5805 17.5247 14.3624 11.1083 7.7800 4.3981 0.9853 -2.4346
Columns 21 through 40
-5.8372 -9.1990 -12.4982 -15.7153 -18.8341 -21.8412 -24.7271 -27.4851 -30.1116 -32.6057 -34.9682 -37.2020 -39.3110 -41.3001 -43.1750 -44.9414 -46.6054 -48.1732 -49.6506 -51.0435
Columns 41 through 60
-52.3574 -53.5975 -54.7689 -55.8762 -56.9238 -57.9156 -58.8556 -59.7472 -60.5936 -61.3978 -62.1627 -62.8907 -63.5844 -64.2458 -64.8770 -65.4798 -66.0561 -66.6074 -67.1352 -67.6410
Columns 61 through 80
-68.1259 -68.5912 -69.0380 -69.4673 -69.8801 -70.2773 -70.6596 -71.0280 -71.3831 -71.7256 -72.0561 -72.3753 -72.6837 -72.9817 -73.2700 -73.5489 -73.8189 -74.0804 -74.3338 -74.5795
Columns 81 through 100
-74.8178 -75.0489 -75.2733 -75.4912 -75.7029 -75.9086 -76.1086 -76.3031 -76.4923 -76.6765 -76.8558 -77.0304 -77.2005 -77.3663 -77.5279 -77.6855 -77.8392 -77.9892 -78.1356 -78.2785
Can anyone please help why am I getting an array instead of single output value.
Thanks in advance.
4 件のコメント
Image Analyst
2022 年 12 月 7 日
No they're not. For example with this line
I = input("Body moment of inertia? in kgm^2");
nowhere do you say what to enter there.
Also, the code doesn't run. What value are you assigning for (lower case) t in
Vf = fl*fb*t;
I don't see t assigned anywhere in the code.
回答 (1 件)
Torsten
2022 年 12 月 7 日
If your inputs and the variable t are scalar values, A cannot be an array.
My guess is that you specified t as a vector.
%A check for different hydrofoil span
I = 1;%input("Body moment of inertia? in kgm^2");
l = 1;%input("Length of body? in m ");
b = 1;%input("Breadth of body? in m ");
w = 1;%input("Width of body? in m ");
d = 1;%input("diameter? in m ");
h = 1;%input("input length of cylindrical cable? in m ");
fl = 1;%input("Length of fin? in m ");
fb = 1;%input("Breadth of fin? in m ");
lf = 1;%input("Length of application of fin force? in m ");
bf = 1;%input("Breadth of application of fin force? in m ");
lc = 1;%input("Length of application of cable force? in m ");
bc = 1;%input("breadth of application of cable force? in m ");
lt = 1;%input("Length of application of towing force? in m");
bt = 1;%input("Breadth of application of towing force? in m");
xcm = 1;%input("center of gravity x?");
ycm = 1;%input("center of gravity y?");
beta = 1;%input("angle between position vector and fin lift? in deg ");
AR = fl/fb;
Cdc = 1;%input("Drag coefficient cable? ");
%Clc = 1;%input("Lift coefficient cable? ");
Cd = 1;%input("Drag coefficient body? ");
Cl = 1;%input("Lift coefficient body? ");
%Cdf = 1;%input("Drag coefficient fin? ");
Clf = 1/((1/(2*pi*beta)+(1/(pi*AR)+(1/(2*pi*(AR^2)))))); %Lift coefficient of fin?
rhow = 1;%input("Density? in kg/m^3 ");
rhob = 1;%input("Body density?");
v = 1;%input("Towing speed? in m/s ");
t = 1;
pi = 3.14;
Vb = l*b*w;
Mb = rhob*Vb; %Body mass
Mwb = rhow*Vb;
Vf = fl*fb*t;
Mf = rhob*Vf; %fin mass
Mwf = rhow*Vf;
Vc = pi*((d/2)^(2))*h;
Mc = rhob*Vc; %towed array mass
Mwc = rhow*Vc;
B = (Mwb+2*Mwf+2*Mwc)*9.81;
W = (Mb+2*Mf+2*Mc)*9.81;
Dc = 0.5*Cdc*rhow*(v^2)*(2*pi*(d/2)*h);
%Lc = 0.5*Clc*rhow*(v^2)*(2*pi*(d/2)*h);
Db = 0.5*Cd*rhow*(v^2)*l*b;
Lb = 0.5*Cl*rhow*(v^2)*w*b;
Lf = 0.5*Clf*rhow*(v^2)*fl*fb;
%Df = 0.5*Cdf*rhow*(v^2)*fl*fb;
theta = atand((Lb+2*Lf+B-W)/(Db+2*Dc)); %angle between horizontal and T? in deg
T = (2*Dc+Db)/cosd(theta);
A = (-2*Dc*bc +2*Lf*lf + (B-W)*ycm - T*lt*sind(theta) - T*bt*cosd(theta))/I
3 件のコメント
Torsten
2022 年 12 月 7 日
The t in
Vf = fl*fb*t;
must be a scalar.
I guess that it's an array in your code (you didn't specify it).
参考
カテゴリ
Help Center および File Exchange で Mechanical Models についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!