如何在“结构”子索引中使用 FOR 循环? - MATLAB
Posted
技术标签:
【中文标题】如何在“结构”子索引中使用 FOR 循环? - MATLAB【英文标题】:How to use a FOR loop in a 'struct' subindex? - MATLAB 【发布时间】:2020-05-19 00:09:58 【问题描述】:我有一个如图所示的结构,我需要寻址 FOR 循环中的一列,如图所示。但我不断收到此错误:
没有为“struct”类的值定义函数“subsindex”。
analisa_arx_teste 中的错误(第 351 行)
就我而言,我想要的是:第 1 行代表 i = 1,第 2 行 i =2;因此,对于特征,当我要求 pref_estemod(i).features 时,是从与每个模型关联的字段特征中获取值。
我刚刚开始使用 matlab 编程,因此我们将不胜感激。
谢谢!
for i=pref_estemod(1:npreferred)
[m,n]=size(Training);
features=(pref_estemod(1,i).features);
end
【问题讨论】:
为什么eval()
.?
没有必要。我把它取下来了,但错误是一样的。 Im cmd 我可以输入,例如 pref_estemod(1,1) 并且它工作正常,但不适用于索引:/
你能显示包含for
循环的代码吗?
当然,我很抱歉。已编辑!
你到底想要i=pref_estemod(1:npreferred)
是什么意思?直到 n
的整数序列(在这种情况下,您需要 i=1:n)或其他? (如果是其他问题,请在问题中进行编辑。)
【参考方案1】:
错误在于i=pref_estemod(1:npreferred)
。
如果您打算使用i
进行索引,则语法为for i=1:npreferred
。
1:npreferred
本身扩展为水平数组[1,2,...,npreferred]
。 =
带有前导 for
是一种特殊的语法组合。这意味着使用i=1
、i=2
、...、i=npreferred
执行以下代码。现在我相信你已经知道for
循环背后的想法了。我写这一切的原因是给你以下警告/建议。不要期望相同的语法适用于非数字数组。因为它在某些情况下有效,而在其他情况下无效。
【讨论】:
“在某些情况下有效,在其他情况下无效”是什么意思?for a=A
始终以相同的方式工作:循环的每次迭代使用 A
的不同列。
@CrisLuengo:我似乎有a
采用整个数组A
的值的情况。所以就是这个意思。如果我没记错的话,它是一个字符串数组。版本是2019a。我没有这个例子了。 (事后看来,我当时应该用这个例子问一个 SO 问题。)
@Agryll:如果数组是列向量,那么只有一列可以迭代。我敢打赌,这就是你所看到的。
@CrisLuengo:只要记忆犹新,我从不使用列向量进行迭代。为了模仿 x:y:z
语法的输出,我可能做出了这个奇怪的决定。但我会记住你提到的未来可能性。以上是关于如何在“结构”子索引中使用 FOR 循环? - MATLAB的主要内容,如果未能解决你的问题,请参考以下文章