我有一个功能
function [ obsTime, obsWDIR, obsWSPD, obsSWH, obsMWD ] = readObsC(obsFile, endTime)
当我运行它时,它会输出一个巨大的数组ans
,它与obsTime
的数组相同。但obsTime
,obsWDIR
,obsWSPD
等不会显示。不应该只有一行代码显示ans
。
当我处于调试模式时,我运行代码并在最后一行停止它,并且它没有提供输出ans
。只有当我点击步骤'两次,函数结束,ans
输出是否出现。
函数中的所有内容都有分号。
为什么会出现ans
?我的其他产出在哪里?
答案 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)
在函数定义中,您可以命名正式的输入和输出参数。这决定了这些参数在函数中使用的名称。
该函数有自己的环境,函数内的变量名完全独立于函数外的变量名,除非您使用global
或evalin('caller')
。
您必须在调用时提供实际的输入和输出参数,这决定了函数外部的代码如何引用那些相同的参数。没有自动传递参数只是因为名称匹配!唯一的自动是,如果你没有指定实际的输出参数,第一个实际的输出参数将是ans
,其余的将被丢弃。
如果您只是阅读MATLAB documentation for ans
:
当您指定无输出参数时,MATLAB®软件会自动创建ans变量。