リアルタイムで変化する変数を行列に格納したい。

7 次查看(过去 30 天)
雷太 鈴木
雷太 鈴木 2022-12-8
移动Atsushi Ueno 2022-12-9
for t1 = 1 : n
t = t1 - t0; %時刻
theta = a * sin(omega * t); %角度θ
value = ((4095.0/(2.0*pi))*theta)+2048; %指令値
Value = round(value); %指令値valueを切り捨てたValue
str1 = sprintf("%d",Value); %数値を文字列に
writeline(s,str1);
writeline(s,"R");
m=0.5;
pause(m)
P=[t;theta;Value];
end
  3 个评论
交感神経優位なあかべぇ
現状はfor文の下記になっていますが、
for t = 1 : n
% 処理
pause(0.5);
end
下記のようにwhile文にすれば解決する(n番目以降の値も記録される)という認識でよいのでしょうか?
t = 1;
while true
% 処理
pause(0.5);
t = t + 1;
end
雷太 鈴木
雷太 鈴木 2022-12-9
移动:Atsushi Ueno 2022-12-9
そのようにやったのですが、リアルタイムで出てくる値をひとつづつ格納したいのですが、その方法が分かりません

请先登录,再进行评论。

回答(1 个)

Hernia Baby
Hernia Baby 2022-12-9
リアルタイムで格納が曖昧ですが、Pに1行ずつデータを付け足すプログラムを作りました。
clc,clear;
m = 0.5;
P = [];
n = 10;
t0 = 0;
a = 1;
omega = deg2rad(30);
for t1 = 1 : n
t = t1 - t0; %時刻
theta = a * sin(omega * t); %角度θ
value = ((4095.0/(2.0*pi))*theta)+2048; %指令値
Value = round(value); %指令値valueを切り捨てたValue
%% ここは置いときます
% str1 = sprintf("%d",Value); %数値を文字列に
% writeline(s,str1);
% writeline(s,"R");
%% ここで結果をコマンドウィンドウで確認できます
% fprintf('value = %i\n',value);
pause(m)
P=[P; t,theta,Value];
end
結果を見てみましょう
P
P = 10×3
1.0e+03 * 0.0010 0.0005 2.3740 0.0020 0.0009 2.6120 0.0030 0.0010 2.7000 0.0040 0.0009 2.6120 0.0050 0.0005 2.3740 0.0060 0.0000 2.0480 0.0070 -0.0005 1.7220 0.0080 -0.0009 1.4840 0.0090 -0.0010 1.3960 0.0100 -0.0009 1.4840
  1 个评论
雷太 鈴木
雷太 鈴木 2022-12-9
编辑:雷太 鈴木 2022-12-9
ありがとうございます。おかげで実行結果のようにできました。
もう一つ質問したいのですが、自分はこのプログラムでロボットをシリアル通信で動かしているのですが、
この秒数だとカクカク動いてしまうため、滑らかに動かすために、時間を経過時間で表したいのですが、どのように表したらよいか教えて頂けますでしょうか。よろしくお願いします。

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 MATLAB 入門 的更多信息

标签

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!