我试图使用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运算符错误。
我尝试将范围值存储为字符串文本以及矩阵。
答案 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));