矩阵作为函数的输出

时间:2010-02-01 17:19:41

标签: matlab function matrix

也许是一个非常简单的问题,但我已经在互联网上找了几个小时的答案,但我找不到它。

我创建了以下功能。在另一个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

2 个答案:

答案 0 :(得分:1)

正如您所定义的那样,函数Actual_Location写入的矩阵的m文件中的名称是actual_location。但是,当您调用函数时,您可以为输出提供您喜欢的任何名称。我认为你这样称呼它,记住Matlab有点区分大小写:

actual_location = Actual_Location(arguments);

你只是在写自己迷惑。在函数定义中使用除actual_location之外的名称作为伪参数,并调用该函数以返回具有更多不同名称的变量,如下所示:

output = Actual_Location(arguments);

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

答案 1 :(得分: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