MATLAB函数输出不需要

时间:2014-06-06 16:23:49

标签: matlab function

我有一个功能

function [ obsTime, obsWDIR, obsWSPD, obsSWH, obsMWD ] = readObsC(obsFile, endTime)

当我运行它时,它会输出一个巨大的数组ans,它与obsTime的数组相同。但obsTimeobsWDIRobsWSPD等不会显示。不应该只有一行代码显示ans

当我处于调试模式时,我运行代码并在最后一行停止它,并且它没有提供输出ans。只有当我点击步骤'两次,函数结束,ans输出是否出现。

函数中的所有内容都有分号。

为什么会出现ans?我的其他产出在哪里?

2 个答案:

答案 0 :(得分:1)

函数声明指定返回值,但是在调用它时,不指定输出的任何位置。当您在命令行上调用某些内容时,输出始终默认为ans,除非您在调用该函数时将该变量分配给该函数的输出。

我将名为myfunc的简单函数定义为:

function [one,two,three,four] = myfunc(value1,value2)

例如,使用工作空间变量(表示为ws_)来捕获函数输出:

>> [ws_one,ws_two,ws_three,ws_four] = myfunc(1,2)

打印:

ws_one =

     1


ws_two =

     2


ws_three =

     1


ws_four =

     2

答案 1 :(得分:1)

在函数定义中,您可以命名正式的输入和输出参数。这决定了这些参数在函数中使用的名称。

该函数有自己的环境,函数内的变量名完全独立于函数外的变量名,除非您使用globalevalin('caller')

您必须在调用时提供实际的输入和输出参数,这决定了函数外部的代码如何引用那些相同的参数。没有自动传递参数只是因为名称匹配!唯一的自动是,如果你没有指定实际的输出参数,第一个实际的输出参数将是ans,其余的将被丢弃。

如果您只是阅读MATLAB documentation for ans

,您可能已经想到了这一点
  

当您指定无输出参数时,MATLAB®软件会自动创建ans变量。