simulink で配列を再配置したいと思います。simulink モデルを D 空間にロードするため、これはリアルタイムで行う必要があります。
私の問題は、rs232 ポートを介して終端文字を使用してデータを受信していることですが、この文字が常に末尾にあるとは限りません。たとえば、終了文字が x の場合、たとえば [3,4,5,x,1,2] を受け取ります。そして、これを [1,2,3,4,5,x] に並べ替えたいと思います。
simulink でこれを行う方法を知っている人はいますか?
私はmatlabコードブロックを使ってみました:
function y = fcn(u)
y = zeros(length(u),1);
help1 = zeros(length(u),1);
help2 = zeros(length(u),1);
sa = 1;
n = length(u);
for i=1:length(u)
if sa == 1;
help2(i) = u(i);
else
help1(i) = u(i);
end
if u(i) == 255
if u(i-1) == 256;
n = i;
sa = 0;
end
end
end
y = [help1(n+1:length(u)); help2(1:n)];
これは通常は問題なく動作しますが、d 空間に構築しようとすると、用語n+1:length(u)
が静的に認識されていないため処理できません。また、matlab関数circshift
を解決できないため、使用できません...
何か案は?