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

9 次查看(过去 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 CenterFile Exchange 中查找有关 プログラミング 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!