我是MatLab的新手,在使用函数的结果时遇到了困难。
我的程序加载一个.mat文件作为对象,然后对.mat中的每个变量运行分析。实际的分析是由for循环中调用的函数完成的。分析结果由函数存储在数组中——或者应该是!如下:
function main()
object = matfile('data.mat')
vars = (fieldnames(object))
resultarray = zeros(length(vars))
for index = 1:length(vars)
var = vars(index)
x = object.var
resultarray = analysis(x, index)
end
end
function resultarray = analysis(x, index)
%does stuff to x
resultarray(index) = x
disp(resultarray(index))
end
问题是,我的变量都不可见!工作区为空。disp()函数打印我分配的值,这样我就知道函数正在工作,但程序完成后我如何访问resultarray?我试着在main()的开头将其声明为全局,但这似乎没有任何作用。我的数组应该传回main()-我如何保存它,以便在程序终止后真正使用函数的输出?
提前感谢您的帮助。
edit-我知道main()的作用域是不同的,但如果我去掉它,我会被告知"函数定义在这个上下文中是不允许的。"看起来出于某种原因,我不能在同一个文件中使用脚本和脚本使用的一些函数。
如果希望将main
保留为具有此语法的函数,则应按如下方式编辑代码(从main
返回resultarray
):
function resultarray = main()
object = matfile('data.mat')
vars = (fieldnames(object))
resultarray = zeros(length(vars))
for index = 1:length(vars)
var = vars(index)
x = object.var
resultarray = analysis(x, index)
end
end
function resultarray = analysis(x, index)
%does stuff to x
resultarray(index) = x
disp(resultarray(index))
end
问题是工作区的作用域与您定义的函数不同。
否则,您可以创建一个名为main.m
:的脚本
object = matfile('data.mat')
vars = (fieldnames(object))
resultarray = zeros(length(vars))
for index = 1:length(vars)
var = vars(index)
x = object.var
resultarray = analysis(x, index)
end
并创建一个名为analysis.m
的单独文件,该文件将包含以下代码:
function resultarray = analysis(x, index)
%does stuff to x
resultarray(index) = x
end