如何将文件路径变量传递给 mex 命令?
How to pass filepath variables to mex command?
目前正在尝试创建脚本化 mex 文件生成的最小示例。
我有一个 MATLAB .m 脚本,我正在 运行 生成 mex 文件。我想将所有参数作为变量传递,以便在给定 filenames/paths.
列表时我可以自动构建一堆 mex 文件
#1 : unknown argument -outdir
input = ' -outdir C:/Users/ian/mexTesting/mexFiles'
mex('src/helloworld.cpp', input)
#2 : unknown filepath / can't find location (interprets entire string as path to mex file)
input = 'src/helloworld.cpp -outdir C:/Users/ian/mexTesting/mexFiles'
mex(input)
#3 : same issue as #2
mex input
#4 : Works, but no variables included, so no easy way to automate
mex src/helloworld.cpp -outdir /mexFiles
所有这些(#4 除外)要么获得未知参数 -outdir,要么将输入字符 arr 解释为 mex 文件的路径。
有人知道如何将变量传递给 mex 命令吗?
我找不到能真正回答这个问题的问题。任何帮助将不胜感激。
这应该可以解决问题:
input = 'src/helloworld.cpp';
output = '/mexFiles';
eval(['mex ' input ' -outdir ' output]);
执行形式为
的命令时
func arg1 arg2 arg3
MATLAB 将此视为与
func('arg1', 'arg2', 'arg3')
相反,当你做类似
的事情时
input = ' -outdir C:/Users/ian/mexTesting/mexFiles'
mex('src/helloworld.cpp', input)
就好像你有 运行
mex src/helloworld.cpp ' -outdir C:/Users/ian/mexTesting/mexFiles'
与
不同
mex src/helloworld.cpp -outdir C:/Users/ian/mexTesting/mexFiles
如果您想将参数参数化为 MEX,则需要将每个 space 分隔的参数保存在单独的字符串中。因此,例如,您可以使用
outdirArg = 'C:/Users/ian/mexTesting/mexFiles';
mex('src/helloworld.cpp', '-outdir', outdirArg);
如果您想在单个变量中批量处理一堆参数,您可以使用元胞数组和逗号分隔的列表扩展,如下所示:
args = {'-outdir', 'C:/Users/ian/mexTesting/mexFiles'};
mex('src/helloworld.cpp', args{:});
目前正在尝试创建脚本化 mex 文件生成的最小示例。
我有一个 MATLAB .m 脚本,我正在 运行 生成 mex 文件。我想将所有参数作为变量传递,以便在给定 filenames/paths.
列表时我可以自动构建一堆 mex 文件#1 : unknown argument -outdir
input = ' -outdir C:/Users/ian/mexTesting/mexFiles'
mex('src/helloworld.cpp', input)
#2 : unknown filepath / can't find location (interprets entire string as path to mex file)
input = 'src/helloworld.cpp -outdir C:/Users/ian/mexTesting/mexFiles'
mex(input)
#3 : same issue as #2
mex input
#4 : Works, but no variables included, so no easy way to automate
mex src/helloworld.cpp -outdir /mexFiles
所有这些(#4 除外)要么获得未知参数 -outdir,要么将输入字符 arr 解释为 mex 文件的路径。
有人知道如何将变量传递给 mex 命令吗?
我找不到能真正回答这个问题的问题。任何帮助将不胜感激。
这应该可以解决问题:
input = 'src/helloworld.cpp';
output = '/mexFiles';
eval(['mex ' input ' -outdir ' output]);
执行形式为
的命令时func arg1 arg2 arg3
MATLAB 将此视为与
func('arg1', 'arg2', 'arg3')
相反,当你做类似
的事情时input = ' -outdir C:/Users/ian/mexTesting/mexFiles'
mex('src/helloworld.cpp', input)
就好像你有 运行
mex src/helloworld.cpp ' -outdir C:/Users/ian/mexTesting/mexFiles'
与
不同mex src/helloworld.cpp -outdir C:/Users/ian/mexTesting/mexFiles
如果您想将参数参数化为 MEX,则需要将每个 space 分隔的参数保存在单独的字符串中。因此,例如,您可以使用
outdirArg = 'C:/Users/ian/mexTesting/mexFiles';
mex('src/helloworld.cpp', '-outdir', outdirArg);
如果您想在单个变量中批量处理一堆参数,您可以使用元胞数组和逗号分隔的列表扩展,如下所示:
args = {'-outdir', 'C:/Users/ian/mexTesting/mexFiles'};
mex('src/helloworld.cpp', args{:});