【问题标题】:Solution for Undefined variable or class error in MatlabMatlab中未定义变量或类错误的解决方案
【发布时间】:2018-04-19 15:33:38
【问题描述】:

假设我有 2 个文件。一个用于训练和测试,另一个是函数。在 trainingAndTesting.m 文件中,当我运行它时,它显示错误:

Undefined variable "featuresIdiap" or class "featuresIdiap.trainGenuine"

但在“featuresIdiap.m”文件中,函数“featuresIdiap”存在,“trainGenuine”也存在于该文件中。仍然显示未定义的错误。

在显示错误的 trainingAndTesting.m 文件中:

Idiap_TrainData = [featuresIdiap.trainGenuine; featuresIdiap.trainReplay; ];

在 featuresIdiap.m 文件中: 第 1 行显示它具有“featuresIdiap”功能。

代码如下:

function featuresIdiap = featuresIdiap(iterCntIdiaptrain, iterCntIdiaptest, varargin )

然后是写“trainGenuine”的代码:

trainGenuine = zeros( 60*numFrames, numTotalFeatures );

另一行包含:

featuresIdiap.trainGenuine = trainGenuine;

如果我像这样更改 trainingAndTesting.m 文件:

featuresIdiap = feature_Idiap([],[]); Idiap_TrainData = featuresIdiap.trainGenuine;

然后显示如下错误:

Undefined function or variable 'getmapping'

【问题讨论】:

    标签: matlab undefined-variable


    【解决方案1】:

    所以这就是我理解你所拥有的:

    文件feature_Idiap.m

    function featuresIdiap = feature_Idiap(iterCntIdiaptrain, iterCntIdiaptest, varargin)
    featuresIdiap.trainGenuine = zeros( 60*numFrames, numTotalFeatures );
    

    文件trainingAndTesting.m

    Idiap_TrainData = featuresIdiap.trainGenuine;
    

    此示例包含重现您的问题所需的所有内容。我已经从文件中删除了所有其他内容。这就是所谓的Minimal, Complete, and Verifiable Example (MCVE),帮助中心有一个很好的description of this process,下次请关注。如果你从一开始就发布了这个,你会在 5 分钟内得到答案,因为每个关注 标签的人都会马上意识到这个问题!而且,老实说,您可能自己也发现了问题。

    当你运行trainingAndTesting 时,函数feature_Idiap 永远不会被调用。您立即尝试使用它的输出参数。如果我像这样修改 MCVE 示例:

    featuresIdiap = feature_Idiap([],[]);
    Idiap_TrainData = featuresIdiap.trainGenuine;
    

    然后错误消失。

    【讨论】:

    • 感谢您的回复。但是我已经改变了文件名,正如你所说的“featuresIdiap.m”,错误仍然是一样的。现在在顶部的这个文件中它是这样写的:“function featuresIdiap = feature_Idiap(iterCntIdiaptrain, iterCntIdiaptest, varargin)” 如果我把它改成这样:“function featuresIdiap = featuresIdiap(iterCntIdiaptrain, iterCntIdiaptest, varargin)” 仍然是错误是一样的。
    • 谢谢。但是“trainGenuine”不是一个函数。在 trainingAndTesting.m 文件中,它是这样调用的: Idiap_TrainData = [featuresIdiap.trainGenuine; featuresIdiap.trainReplay; ];在 featuresIdiap.m 文件中,它是这样使用的: trainGenuine = zeros( 60*numFrames, numTotalFeatures ); featuresIdiap.trainGenuine = trainGenuine;我理解它在 featuresIdiap.m 文件中明确定义,对吗?那么错误在哪里呢?看到后能告诉我吗?
    • 现在请看问题。我已经修改过了。请忽略我的错误并帮助我找到更好的答案。
    • 请检查已编辑的问题。当我使用您提供的代码时,它会显示这个新错误。我附上了错误的屏幕截图。希望能帮助你更容易理解。
    • @RezwanhasanAntik:真的,你必须在这里实现自己的解决方案。我指出问题所在。您需要调用feature_Idiap 函数并捕获其输出,如果不先调用该函数,则无法使用此输出。我认为这是显而易见的。我在答案中显示的代码修复了 针对 MCVE 的错误消息。您必须将此答案调整为您自己的代码。特别是,您需要使用正确的参数调用feature_Idiap。我不知道这个函数做什么或需要什么,我不能告诉你它需要什么输入参数。这取决于你。
    猜你喜欢
    • 1970-01-01
    • 2015-02-22
    • 2012-09-26
    • 2019-11-16
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    相关资源
    最近更新 更多