How to extract one element from array in function?
16 ビュー (過去 30 日間)
古いコメントを表示
I want to extract one element from array, but it is difficult in function statement.
Please someone tell me the way.
function dtheta = odeFun(t, theta)
g = 9.8;
l = 1;
Trq = randi([10 25],1,1); % Generate random numbers from 10 to 25
disp(Trq(1,1)) ← I wanna extract one element here.
% theta(1) = theta, theta(2) = dtheta
dtheta = zeros(2, 1);
dtheta(1) = theta(2);
dtheta(2) = -g/l*theta(1)-Trq;
end
0 件のコメント
回答 (1 件)
LO
2021 年 7 月 17 日
編集済み: LO
2021 年 7 月 17 日
It is not clear what you want the function to do. What is t? and theta?
If your aim is to apply a fixed transformation of theta and create 2 output variables (dtheta and Trq) you need to specify a "Trq output variable" in the function synthax together with dtheta.
test = odeFun(2,45); % I've tried to test value pairs, in absence of any other hint
function [dtheta,Trq] = odeFun(t, theta)
g = 9.8;
l = 1;
Trq = randi([10 25],1,1); % Generate 1 random number from 10 to 25 (it generates only 1 Nr)
dtheta = zeros(2, 1);
dtheta(1) = theta(1); % I've changed theta's index to 1, it did not work otherwise
dtheta(2) = -g/l*theta(1)-Trq;
end
6 件のコメント
LO
2021 年 7 月 18 日
編集済み: LO
2021 年 7 月 18 日
Trq = randi([10 25],1,1); % this is your randomly generated torque
test = odeFun(2,45,Trq); % this is your test measure using the torque value
function [dtheta] = odeFun(t, theta, Trq)
g = 9.8;
l = 1;
dtheta = zeros(2, 1);
dtheta(1) = theta(1);
dtheta(2) = -g/l*theta(1)-Trq;
end
Walter Roberson
2021 年 7 月 18 日
Using randomness outside of the odeFun and passing the value in, is something that is entirely valid.
If you were wanting to call this from ode45() then see http://www.mathworks.com/help/matlab/math/parameterizing-functions.html
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!