【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)]);