matlabのclassdefを用いて,関数をクラス内で定義したいのですが,変数が割り当てらてないなどのエラーが生じます.どなたか,正しい書き方をご教示の程,お願い致します.
classdef plactice properties(Constant) % 各固定値を保有,Staticで変更 L = 1; % 長さ m = 1; % 質量 g = 9.8; % 重力加速度 Tspan = linspace(0,2,20); % 積分する時間 状態数20×20 theta_ic = [0;0]; % 初期の角度と角速度 b = 0.01 % 摩擦係数 u = randi([10 25],1,1); ball_target = 2.5; end methods(Static) function [dtheta_dt] = ode_function(t, theta) % ローカル変数を定義して式を作成 g = plactice.g; L = plactice.L; u = plactice.u; b = plactice.b; theta1 = theta(1); theta2 = theta(2); dtheta1_dt = theta2; dtheta2_dt =-(g/L)*(theta1)-b*(theta2)-u; dtheta_dt = [dtheta1_dt; dtheta2_dt]; end function ball_gosa = ball_function(u) % この関数定義の仕方が間違っているみたいです.w,theta,ball_x,ball_yなどが正しく割り当てらてないです. ball_target = plactice.ball_target; [t, theta] = ode45(@(t,theta) plactice.ode_function(t,theta),plactice.Tspan,plactice.theta_ic); w = theta(:,2); theta = theta(:,1); ball_x = L*sin(theta(:,1)); ball_y = -L*cos(theta(:,1)); ball_time = sqrt(2*abs(ball_y)/9.8); ball_reach = ball_x +abs(w)*ball_time; ball_gosa = ball_reach-ball_target; end end end
クラス内の値の呼び出しができないです.thetaはできるのですが,ほかの変数の値が出力されないです.
例えば,
>> ball_x 関数または変数 'ball_x' が認識されません。
エラーメッセージは省略せず質問文に記載してください。
回答1件
あなたの回答
tips
プレビュー