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

12 Ansichten (letzte 30 Tage)
雷太 鈴木
雷太 鈴木 am 8 Dez. 2022
Verschoben: Atsushi Ueno am 9 Dez. 2022
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 Kommentare
交感神経優位なあかべぇ
Bearbeitet: 交感神経優位なあかべぇ am 8 Dez. 2022
現状はfor文の下記になっていますが、
for t = 1 : n
% 処理
pause(0.5);
end
下記のようにwhile文にすれば解決する(n番目以降の値も記録される)という認識でよいのでしょうか?
t = 1;
while true
% 処理
pause(0.5);
t = t + 1;
end
雷太 鈴木
雷太 鈴木 am 9 Dez. 2022
Verschoben: Atsushi Ueno am 9 Dez. 2022
そのようにやったのですが、リアルタイムで出てくる値をひとつづつ格納したいのですが、その方法が分かりません

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Hernia Baby
Hernia Baby am 9 Dez. 2022
リアルタイムで格納が曖昧ですが、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 Kommentar
雷太 鈴木
雷太 鈴木 am 9 Dez. 2022
Bearbeitet: 雷太 鈴木 am 9 Dez. 2022
ありがとうございます。おかげで実行結果のようにできました。
もう一つ質問したいのですが、自分はこのプログラムでロボットをシリアル通信で動かしているのですが、
この秒数だとカクカク動いてしまうため、滑らかに動かすために、時間を経過時間で表したいのですが、どのように表したらよいか教えて頂けますでしょうか。よろしくお願いします。

Melden Sie sich an, um zu kommentieren.

Tags

Produkte


Version

R2022a

Community Treasure Hunt

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

Start Hunting!