自作関数の入力引数不足エラーについて
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
irosy
am 17 Dez. 2022
Kommentiert: irosy
am 18 Dez. 2022
こんにちは.MATLAB初心者です.
あるモデルの相対距離,相対角度を入力値に対して求める関数を作ろうとしているのですが,どうも入力引数エラーが発生してしまい前に進めません.
コードはこちらです.
q1 = [0 0.5 0.5*pi]; %[x,y,theta]
q2 = [-0.4 0.8 0];
x = [0.10, q1, q2 ] %相対距離,方位角の算出に必要な[半径,初期位置ベクトル]
以下,自作関数です
function [l_ik, phi_ik] = relative_parameters(r,x_i,y_i,theta_i,x_k,y_k,theta_k)
%カッコ内は受け取るデータr,x_i,y_i,theta_i,x_k,y_k,theta_kの7つ
bar_y_k = bar_y(r,x_i,y_i,theta_i,x_k,y_k,theta_k)
bar_x_k = bar_x(r,x_i,y_i,theta_i,x_k,y_k,theta_k)
xi_ik = atan((y_i - y_k - r*sin(theta_k))/(x_i - x_k -r*cos(theta_k)));
l_ik = sqrt((x_i - bar_x_k)^2 + (y_i - bar_y_k)^2);
phi_ik = pi + xi_ik - theta_i;
end
複数の入力値の受け渡しが問題なのかなと思いますが,あまりにも時間が溶けていくのでご有識者の方々の力をおかりしたいです.おねがいします!
0 Kommentare
Akzeptierte Antwort
Atsushi Ueno
am 17 Dez. 2022
関数側の引数を変更しない場合は関数の呼出側で引数を分けて渡す必要があります。
q1 = [0 0.5 0.5*pi]; %[x,y,theta]
q2 = [-0.4 0.8 0];
relative_parameters(0.10,q1(1),q1(2),q1(3),q2(1),q2(2),q2(3))
4 Kommentare
Atsushi Ueno
am 17 Dez. 2022
>そこは、構造体配列を使えば良いでしょう
構造体配列はこんな感じです。ですが、どんな型を使うのもプログラマの自由です。
% 相対距離,方位角の算出に必要な[半径,初期位置ベクトル]
x.q1.x = 0.0; x.q1.y = 0.5; x.q1.theta = 0.5*pi;
x.q2.x = -0.4; x.q2.y = 0.8; x.q2.theta = 0; x.r = 0.10;
x
x.q1
[l_ik, phi_ik] = relative_parameters(x)
function [l_ik, phi_ik] = relative_parameters(x)
bar_y_k = bar_y(x)
bar_x_k = bar_x(x)
xi_ik = atan((x.q1.y - x.q2.y - x.r*sin(x.q2.theta)) ...
/(x.q1.x - x.q2.x - x.r*cos(x.q2.theta)));
l_ik = sqrt((x.q1.x - bar_x_k)^2 + (x.q1.y - bar_y_k)^2);
phi_ik = pi + xi_ik - x.q1.theta;
end
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu 線形計画法と混合整数線形計画法 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!