将变量传递给MATLAB中的ImageJ MIJI命令

时间:2017-11-19 05:57:28

标签: java matlab imagej

我试图使用MATLAB ImageJ接口(Miji)来运行一个命令块,但是很难将变量传递给宏命令的选项。我试图加载一个.tif的图像堆栈,并使用ImageJ的重复命令将它们分成更小的堆栈。

从宏构建器的ImageJ网站,它说明了;

  

通过添加"&"将变量传递给使用run()调用的命令。变量名称。

例如

public class UserValueEventListener : Java.Lang.Object, IValueEventListener
{
    EventHandler OnChange;

    public UserValueEventListener(EventHandler OnChange) => this.OnChange = OnChange;

    public void OnCancelled(DatabaseError error)
    {
        Log.Warn(App.TAG, "Failed to read value:", error.ToException());
    }

    public void OnDataChange(DataSnapshot snapshot)
    {
        if (OnChange != null && snapshot.Value != null && snapshot.Key == User.UserNameRoot)
        {
            foreach (DataSnapshot item in snapshot.Children.ToEnumerable())
            {
                var user = item.GetValue(Java.Lang.Class.FromType(typeof(User))) as User;
                OnChange.Invoke(this, new UserEventArgs(user));
            }
        }
    }
}

这应该复制由值设置的范围内的图像堆栈。但是,当将其转换为MATLABs MIJI插件时,如下所示;

values = 1-5
run("Duplicate...","duplicate range=&values")

这不起作用,只复制整个图像堆栈。打破字符串' '抛出意外的MATLAB运算符错误。

我尝试将范围值存储为字符串文本以及矩阵。

2 个答案:

答案 0 :(得分:0)

尝试使用MATLAB's supported string concatenation techniques之一连接字符串。也许最简单的方法是使用方括号,如下所示:

MIJ.run('Duplicate...', ['duplicate range=' values])

答案 1 :(得分:0)

我可以使用sprintf

来完成此操作
values = 1-5;
MIJ.run('Duplicate...',sprintf('duplicate range=%d',values));