ターミナルから入力される場合、数値ではなく文字列として扱われてしまうためだと思われます。文字列(char)だったら数値(numまたはdouble)に変更するコードを追加すれば大丈夫です。
なお、iは虚数を表す予約変数名でもあるので、ここではnと表記しています。
function [res] = myfunc(arry, n)
if ischar(arry)
arry = str2num(arry);
end
if ischar(n)
n = str2double(n);
end
res=sum(arry)/n;
これをスタンドアロンアプリに変換して、以下のように実行します。
【実行例】
sh run_myfunc.sh /Applications/MATLAB_R2022a.app "1,2,3" 1
sh run_myfunc.sh /Applications/MATLAB_R2022a.app "[1,2,3]" 1
多次元の配列を渡す場合はセミコロンで行を区切ります。
sh run_myfunc.sh /Applications/MATLAB_R2022a.app "[1,2,3;1,2,3]" 1