【MATLAB/Simulink】虎の巻

MATLAB/Simulinkを使っていて困ったことおよび解決したことを記載。

SimulinkMATLAB Functionでimreadにてpngファイル(jpegファイル以外)を読み込もうとするとエラーになる。
使用環境
MATLAB:2020a
Simulink:2020a
使用機能
imread
MATLAB Function
エラー
'~~\test.png' は JPEG ファイルではありません。
原因
SimulinkMATLAB Functionでimreadにてpngファイル(jpegファイル以外)を読み込もうとするとエラーになる。
MATLABのヘルプセンターのサイトにて、C/C++ コード生成の注意点として下記記載あり。
よって、Simulinkpngファイル対応していないためと思われる。
MATLABのヘルプセンターのサイトより抜粋
https://jp.mathworks.com/help/matlab/ref/imread.html
8 ビットの JPEG イメージの読み取りのみをサポートします。入力引数 filename は有効な絶対パスまたは相対パスでなければ なりません。
SimulinkMATLAB Functionでstring型を使おうとするとエラーになる。
使用環境
MATLAB:2020a
Simulink:2020a
使用機能
MATLAB Function
エラー
コード生成では string 配列がサポートされていません。文字ベクトルの cell 配列を使用してください。
原因
SimulinkMATLAB Functionでstring型を使用するとエラーになる。
(他にも対処方法はあるかも)
対処方法
convertStringsToChars型で、char型に変換する。
例. 下記MATLAB Functionのように、strImgInPath、strImgInNameがstring型である場合
f:id:lm4183:20220315223032p:plain
function imgIn  = ReadImg(strImgInName,strImgInPath)

imgIn = imread([strImgInPath '\' strImgInName]);

function imgIn  = ReadImg(strImgInName,strImgInPath)

imgIn = imread([convertStringsToChars(strImgInPath) '\' convertStringsToChars(strImgInName)]);

【きららファンタジア】強敵チャレンジクエスト(2月)

今月のチャレクエは弱い方かと思うので、
テキトーにバフ盛って、ゆゆ式オーブにてとっておきで完。
たぶん、アルケミスト混ぜて、フレンド有効活用したほうが効率もっと良い。
今回は魔法使い使ったけど、戦士でも可。(カレンちゃんでそぉい!するでよし)


www.youtube.com
カレンちゃんでそぉい!版


www.youtube.com

【フィギュア】魔女の旅々_イレイナ

「魔女の旅々 イレイナ DX Ver. 1/7」のフィギュアが届いたので、アップ。

f:id:lm4183:20211030120439j:plain f:id:lm4183:20211030120516j:plain f:id:lm4183:20211030120521j:plain f:id:lm4183:20211030120534j:plain f:id:lm4183:20211030120548j:plain f:id:lm4183:20211030120603j:plain パンツ撮るの難しい。 f:id:lm4183:20211030120642j:plain f:id:lm4183:20211030120656j:plain f:id:lm4183:20211030120659j:plain f:id:lm4183:20211030120641j:plain


【Javascript】5×5ポーカー(対戦)

5×5ポーカー(対戦)

下記5×5ポーカーの結果(パスワード)を使って対戦できます。 lm4183.hateblo.jp
★ルール★
①対戦ルール(セット数制/ポイント制)を決める。
②パスワードをロードする。
③結果を確認する。


★設定★
セット数制
セット数:

ポイント制
ポイント:
1位 7位 13位 19位
2位 8位 14位 20位
3位 9位 15位 21位
4位 10位 16位 22位
5位 11位 17位 23位
6位 12位 18位 24位




Player1 Player2
手札 A B C D E
1
2
3
4
5
手札 A B C D E
1
2
3
4
5

【Javascript】5×5ポーカーver1.05

5×5ポーカー

★設定★

手札 A B C D E
1
2
3
4
5
山札 (捨札)
★ログ★
★前提★
・1人用ゲーム

★ルール★
基本的には、ポーカーと同じルールですが、
1セットだけでなく縦・横・斜めの12セットでそれぞれ役を作ります。

①「スタート」ボタンを押すと、ランダムでカードが配布される。
②交換したいカードを選択する。(背景:黄色にする。)
③カード交換ボタンを押す。
 ※交換は1回まで。
④役を確認する。
 ※最初からやり直す場合は、再度「スタート」ボタンを押す。

(その他)
・設定「カード交換回数の無限化」を付けた場合、カード交換回数の上限なし。
・セーブで出力したパスワードをロードすることで、続きから実施可能。

★アイコンの意味★
★更新履歴★
・ver0.00:21/01/16:新規作成(作業途中)
・ver1.00:21/01/17:結果テーブルを作成
・ver1.01:21/01/17:役をアイコン化
           テーブルのスタイル変更
           点数を追加
・ver1.02:21/01/19:点数を廃止
           不具合を修正
           リファクタリング
・ver1.03:21/01/21:山札を追加
           マークを色付け
・ver1.04:21/01/23:ログを追加
           設定(カード交換回数の無限化)を追加
           セーブ、ロードを追加
・ver1.05:21/01/26:スタイル変更(スマホでも見やすくしたつもり)

【プログラム】乱数の数列

<はじめに>
例えば、下記のような0~6の7個の数
 [0 1 2 3 4 5 6]
を下記のようにランダムで並べることを考えたい。
 [2 3 5 0 6 4 1]
本記事では、備忘録としてその方法を記載します。

Javascriptのプログラムを作成するときに纏めたもののため、本記事も基本的にJavascriptの記述で記載する。
箇条書きで書いていますが、下の方にある図をメインで見てもらったほうがよいかもです。


<乱数の数列の作成方法>
※下記0~6の7個の数を例に記載。

① 一次元の配列に、並べる前の数を入れておく。(ここでは、変数名tempとする。)
例.
var temp = [0, 1, 2, 3, 4, 5, 6];

② ランダム関数で0~6の範囲で乱数(整数値)を取得する。(ここでは、変数名randとする。)

例.
rand = Math.floor(Math.random() * 7);
※Math.random()関数は、0以上1未満の範囲から乱数を返す関数
※Math.floor()関数は、小数点以下切り捨てする関数

③ ②で取得した乱数を最終出力の配列に入れる。(ここでは、変数名outとする。)

例.
out[0] = rand;

④ temp変数のrand番目に一番最後の要素を入れる。
  <本作業の目的>
  ③で取得済みの乱数は、次から考えないようにしたい。
  そのため、もともと要素数7の配列だったが、
  あたかも要素数6(③で取得した乱数以外)の配列かのように扱っていくようにする。

例.
temp[rand] = temp[6];
※temp.length-1が一番最後の要素を指す

⑤ ②を範囲を一つ小さくして、②~④を要素の数だけ繰り返し実施する。
  すなわち、0~5の範囲で乱数(整数値)を取得する。

例.
rand = Math.floor(Math.random() * 6);
out[1] = rand;
temp[rand] = temp[5];
rand = Math.floor(Math.random() * 5);
out[2] = rand;
temp[rand] = temp[4];
rand = Math.floor(Math.random() * 4);
out[3] = rand;
temp[rand] = temp[3];
 ︙
rand = Math.floor(Math.random() * 1);
out[6] = rand;
temp[rand] = temp[ ]; ←最後のステップ時は不要


<乱数の数列の作成方法の図>
f:id:lm4183:20210123234706p:plain


時間[s] キーストローク 備考
0 Ctrl 閉じる
0 W
0 Ctrl
0 W
0.5 N 保存しない(N:No)
0 N
0.5 Ctrl 新規作成
0 N
0 Ctrl
0 N
0.5 Enter  
0 Enter

 

 

<用語>

・CLIP STUDIO:株式会社セルシスのペイントソフト

・Razer Tartarus Pro:Razerの左手用キーパッド

・Razer Synapse:Razerのキーマップ設定ソフト

 

 

 <(参考)Spaceを押しながらドラッグすることで移動することができることを知った動画>

※5分30秒くらい

https://www.youtube.com/watch?v=2faq9cndENo&list=PL8o9gN9hzJCz04idSPv2PeXbBmKGQsmTl&index=1