并行执行多个matlab程序(多组参数)

本文介绍了如何在Matlab中通过命令行传递参数给无参数和带参数的函数,以及如何利用shell脚本进行多参数训练任务的并行执行。重点讲解了使用'fprintf'和'disp'函数,以及shell的'for'循环和'wait'命令实现并行训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

argument passing in command line

命令行运行一个无参数的函数,如:

function f()
    fprintf("hello world!\n");
end

可以执行 matlab -nodesktop -nosplash -r f。而如果要传参数,如:

function g(alpha)
    disp(alpha);
end

参考 [1],执行 matlab -nodesktop -nosplash -r "g(27)",即用引号括起来。

parallel training

现有一个训练程序,要测试多个参数,硬件足够同时跑多组,就可以把训练函数写成:

% train.m
function train(alpha, beta)
    fprintf("begin\n");
    fprintf("alpha = %.4f, beta = %.4f\n", alpha, beta);
    % training code
    fprintf("end\n");
    exit % 必加,用来退出 matlab 环境,否则会阻塞下面 shell 的循环
end

调用的 shell 脚本:

  • 命令尾加 & 挂子进程并行跑
  • wait 命令等待并行的子进程全部结束(类似多进/线程的 join
#!/bin/bash

set -e

ALPHA=(1 2 3)
BETA=(4 5 6)

for _a in $(seq 0 `expr ${#ALPHA[@]} - 1`); do
    alpha=${ALPHA[_a]}
    for _b in $(seq 0 `expr ${#BETA[@]} - 1`); do
        beta=${BETA[_b]}
        matlab -nodesktop -nosplash -r "train($alpha, $beta)" &
    done
    wait  # 资源不是很够,就在这里 wait,并行少些
done

# wait  # 资源够,就在这里 wait,并行多些

References

  1. run matlab and pass integer parameter from command line
  2. pause
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值