函数的输出矩阵

5
也许这是一个非常简单的问题,但我已经在互联网上寻找答案几个小时了,但我找不到答案。
我创建了下面的函数。在另一个m文件中,我想使用矩阵“actual_location”。然而,无法使用矩阵的单个单元格(即actual_location(3,45)或actual_location(1,2))。当我尝试使用单个单元格时,我会得到以下错误:??? Error using ==> Actual_Location Too many input arguments. 请问有谁能告诉我我需要更改什么,以便我可以读取矩阵的单个单元格吗?
function [actual_location] = Actual_Location(~);  
actual_location=zeros(11,161);
for b=1:11  
   for t=1:161  
       actual_location(b,t) = (59/50)*(t-2-(b-1)*12)+1;   
       if actual_location(b,t) < 1  
           actual_location(b,t) =1;  
       end       
   end  
   actual_location(1,1)  
end

你在哪里/如何使用actual_location? - Chris H
我在另一个m文件中使用actual_location进行一些简单的计算(加法和减法)。我使用以下代码在其他m文件中打开它:Actual_Location - Daan
2个回答

1

根据您定义的方式,由函数Actual_Location编写的矩阵在m文件中的名称为actual_location。然而,在调用函数时,您可以给输出任何您喜欢的名称。我假设您是这样调用它的,记住Matlab有点区分大小写:

actual_location = Actual_Location(arguments);

你只是在写代码时让自己感到困惑。在函数定义中,使用一个名称而非actual_location来命名虚拟参数,并将函数调用以返回更具有明显区别的变量名称,就像这样:

output = Actual_Location(arguments);

看起来你可能期望 actual_location(1,1) 返回数组中的元素 1,1,但它很可能是一个有两个输入参数的函数调用。


Matlab对于函数名称不区分大小写。因此,如果有一个名为foobar的函数,可以将其称为fOoBaRFOObAr等。另外,一旦调用了一个函数,比如调用了Actual_Location,Matlab解释器会将actual_location( ... )解释为对该函数的调用,从而导致nargin错误。M/W使用'()'进行矩阵索引真是太可惜了。 - shabbychef
2
Matlab是有点区分大小写的。它首先会寻找精确匹配,然后再检查不精确匹配(现在会发出警告,但在未来的版本中会报错)。 此外,()用于矩阵索引是一致的,因为访问矩阵就是调用一个可以重载的函数(subsref、subsasgn)。 - Jonas

1

这似乎表明您正在使用过多的参数调用Actual_Location函数...我将使用适当的缩进重新编写您的代码。

function [actual_location] = Actual_Location()
  actual_location=zeros(11,161); 
  for b=1:11
    for t=1:161
      actual_location(b,t) = (59/50)*(t-2-(b-1)*12)+1;
      if actual_location(b,t) < 1
        actual_location(b,t) = 1;
      end
    end
    actual_location(1,1)
  end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接