使い方によるエラー sym/subsindex

5 ビュー (過去 30 日間)
蓮 出越
蓮 出越 2022 年 12 月 22 日
コメント済み: 蓮 出越 2022 年 12 月 23 日
大学で自動運転に関する研究をしている者です。
サンプリングタイム0.1秒で0秒から2秒後までの次の物体の位置をすべてfigureにプロットをしたいと思っています。
ヨーレートの範囲は-10(rad/s)~10(rad/s)でサンプリングヨーレート0.1(rad/s)です。
次の時間のX座標、Y座標を求める式が下の式です。
x(t+1) = x(t) + Vcos(ω(t))dt
y(t+1) = y(t) + Vcos(ω(t))dt
ω(t) = (ヨーレート)*(サンプリングタイム)
下のコードを実行すると下のようなエラーがでるため、その原因をご教示していただければと思います。
よろしくお願いいたします。
コード
%% サンプリングタイム
sample_Ts = 10;
Ts = 1 / sample_Ts;
%% 予測ホライズン
N = 2;
%% 初期位置
% x = 0;
% y = 0;
theta0 = 0;
x = zeros(1, sample_Ts*N);
y = zeros(1, sample_Ts*N);
%% 速度
v = 10;%km/h
%% ヨーレート
% 最小ヨーレート
Yaw_min = -10;%(rad)
% 最大ヨーレート
Yaw_max = 10;%(rad)
% サンプルヨーレート
Yaw_sample = 0.1;%(rad)
% ヨーレート
%Yaw = [Yaw_min:Yaw_sample:Yaw_max];
for Yaw = Yaw_min:Yaw_sample:Yaw_max
%% 次の車両の位置
for t = 0:Ts:N
syms t;
f = v*cos(Yaw*t);
g = v*sin(Yaw*t);
x(t+Ts)=x(t)+int(f, t, t+Ts);
y(t+Ts)=y(t)+int(g, t, t+Ts);
plot(x(t),y(t))
end
end
エラー内容
使い方によるエラー sym/subsindex
インデックス付けまたは関数定義が無効です。インデックス付けは MATLAB インデックスに従わなければなりません。関数の引数はシンボリッ
ク変数でなければならず、関数本体は sym 式でなければなりません。
エラー: sample (35)
x(t+Ts)=x(t)+int(f, t, t+Ts);

採用された回答

Atsushi Ueno
Atsushi Ueno 2022 年 12 月 22 日
symsで定義したシンボリック変数 t をベクトルのインデックスに使用した事がエラーの原因です。
シンボリック式で表現するならfor文を回す必要は無いですし、
for文を回すならシンボリック式を使わない数値計算で事足りると思います。
%% サンプリングタイム
sample_Ts = 10;
Ts = 1 / sample_Ts;
%% 予測ホライズン
N = 2;
%% 初期位置
% x = 0;
% y = 0;
theta0 = 0;
x = zeros(1, sample_Ts*N);
y = zeros(1, sample_Ts*N);
%% 速度
v = 10;%km/h
%% ヨーレート
% 最小ヨーレート
Yaw_min = -10;%(rad)
% 最大ヨーレート
Yaw_max = 10;%(rad)
% サンプルヨーレート
Yaw_sample = 0.1;%(rad)
% ヨーレート
%Yaw = [Yaw_min:Yaw_sample:Yaw_max];
figure;
for Yaw = Yaw_min:Yaw_sample:Yaw_max
%% 次の車両の位置
index = 1;
for t = 0:Ts:N
%syms t; % シンボリック変数や式を使わず数値計算してみる
x(index) = x(max(1,index-1)) + v*(-sin(t*Yaw)+sin((t+Ts)*Yaw))/Yaw;
y(index) = y(max(1,index-1)) + v*( cos(t*Yaw)-cos((t+Ts)*Yaw))/Yaw;
plot(x(index),y(index),'*'); hold on
index = index + 1;
end
end
  1 件のコメント
蓮 出越
蓮 出越 2022 年 12 月 23 日
ご回答ありがとうございます。
for文が積分を表していることに気づきませんでした。解決できました。
ありがとうございます。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange仮定 についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!