如何在matlab中将结构插入到函数中

时间:2014-03-10 18:05:39

标签: matlab function structure handler

我正在编写一个matlab函数:

function [resultNorm]= explorEffort (n, loop, step)
...
Somelines
...
M=bench(a,b).Y ;
end

但似乎matlab编译器不允许我在函数中使用结构,错误是:

Error: File: explorEffort.m Line: 20 Column: 15
Functions cannot be indexed using {} or . indexing.

P.S:替补定义

bench = 

24x5 struct array with fields:

application
dataset
mica
micaNorm
DB
Y

有人能提到我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:0)

方法-1

有可能将结构(即此处bench)定义为文件外部的全局,并在第一次出现global bench;之前调用bench

方法-2

更安全的选择可以是将函数的输入参数中的结构传递为:

function [resultNorm]= explorEffort (n, loop, step, `bench`)
在这种情况下,无需事先进行不必要的全球化。

答案 1 :(得分:0)

我认为主要问题是"替补"是内置的MATLAB(取决于您的matlab版本)。 您可以尝试在将来重命名变量。

你可以运行: X =工作台;或帮助工作台

我之前遇到过类似的问题。