【问题标题】:Passing multiple inputs into a MATLAB function via loop?通过循环将多个输入传递给MATLAB函数?
【发布时间】:2015-06-24 21:57:33
【问题描述】:

我有多个变量 var_1、var_2、var_3....var_9(它们的名称是这样的),我想将它们传递给一个函数。所有变量都保存在工作区中。该函数接受 2 个变量,并输出一个输出。我想将 var_1 与所有变量(包括它自己)进行比较,因此我更喜欢在循环中将其自动化。

所以我想执行

function(var_1,var_1)--> 显示答案,function(var_1,var_2)--> 显示答案...function(var_1,var_9)--> 在循环中一次性显示答案。我尝试了以下方法,但没有运气:

for i=1:7
functionname(var_1,var_'num2str(i)')
end

我哪里做错了?

【问题讨论】:

标签: matlab loops


【解决方案1】:

您不能直接创建动态变量名。但是您可以使用eval-函数将表达式计算为字符串。可以使用sprintf 生成字符串,并将%d 替换为您的值。

for i=1:7
  eval(sprintf('functionname(var_1,var_%d)', i));
end

但是:尽可能避免使用eval 函数。一个更好的解决方案是为此目的使用单元阵列。在 Matlab 的文档中,有一个 whole article 关于原因和可能的替代方案。简而言之,这里是使用元胞数组的代码:

arr = {val_1, val_2, val_3, val_4, val_5, val_6, val_7, val_8, val_9};

for i = 1:length(arr)
  functionname(arr{1},arr{i})
end

【讨论】:

  • @nkjt:我编辑了我的答案并提出了更好的方法。
猜你喜欢
  • 1970-01-01
  • 2010-11-03
  • 2018-10-15
  • 1970-01-01
  • 2021-10-03
  • 2019-01-25
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多