csvファイルのデータを用いた計算

8 ビュー (過去 30 日間)
SHOTA TOMIYAMA
SHOTA TOMIYAMA 2021 年 5 月 25 日
回答済み: Naoya 2021 年 5 月 28 日
function xt = Displacementforced(t,x)
m = 1;
k = 1;
c =0.2;
a = 0.005;
omega = 1;
xt = [x(2);-c/m.*(x(2)-a*omega*cos(omega*t))-k/m.*(x(1)-a*sin(omega*t))]
x0 = [0;0];
t = [0:0.1:30];
[T X] = ode45('Displacementforced',t,x0);
plot(T,X);
xlabel('time[s]')
ylabel('displacement[m]/velocity[m/s]')
legend('displacement','velocity')
上記のようなばねマスモデルを作成しました.
a*omega*cos(omega*t),a*sin(omega*t)にあたる部分を実験で測定したデータを使用したプログラムに変更したいです.測定データはcsvファイルとなっています.
データのインポートをしてそのまま式にいれたのですが変数が認識されませんとなってしまいました.

採用された回答

Naoya
Naoya 2021 年 5 月 28 日
ユーザが定義した時刻歴データ(点列のデータ)を微分方程式の外部入力とする場合に該当すると思われますが、関連記事が下記にございますので、一度ご参考頂ければと思います。
上記記事の "2.ode45 等の微分方程式を解く関数を用いる方法" の部分が該当します。
こちらの例では、ユーザが定義した時刻歴データが正弦波の例となっており、こちらをそのまま積分した例となっておりますが、方法としては同じことになります。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeプログラミング についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!