解释matlab代码

时间:2014-03-06 09:46:33

标签: matlab

我是一名Java程序员,并且没有matlab的背景,因此我对MATLAB的这些代码行真的很无能为力。当我运行代码时出现错误:

??? Undefined function or variable 'nfile'.

Error in ==> texture_id at 29
fprintf(' \nneural network processing \n',nfile);

我理解'path'是一个存储字符串的变量,'demo'是布尔值,但对于其他行,我不想假设它做什么...你能帮帮我吧并解释每一行?

以下是代码:

path = 'C:\Users\Dais\Documents\MATLAB\Data Sets\';

demo = true; 

elfile = dir('*.jpg');   

[lu ri] = size(elfile); feat=zeros(lu,29); nomf=cell(lu,1); 
for nfi = 1:lu
    nfile = elfile(nfi).name;  
    fprintf(' feature extraction file: %s \n',nfile);
    nomf{nfi} = upper(nfile);  
    feat(nfi,:) = feature_ex([path nfile],demo);
end

fprintf(' \nneural network processing \n',nfile);

2 个答案:

答案 0 :(得分:1)

我不会解释MATLAB的所有内容,而是说:MATLAB是互动的!而且,为MATLAB支付高额资金的一个原因是文档很棒,获得帮助非常简单。

例如,您可以在MATLAB命令行上键入help <command>,并获得该命令的简短帮助,或doc <command>获取完整文档,通常包含示例和演示。如果您喜欢Google并且在浏览器中,整个文档也在线。

如果您有一个有问题的脚本或函数或类,您可以发出dbstop if error,以便在发生错误时进入调试器,然后您可以在之前查看所有变量的内容错误,键入新命令以调查错误等。您可以通过单击要中断的位置旁边的行号来设置断点,dbstep然后单步执行,dbup将您移动一个级别等。看看doc dbstop

您可以选择部分代码并按F9,这将执行这些代码行。请注意,这相当于将代码复制粘贴到命令窗口并运行它,因此您通常会遇到未定义变量(以及类似问题)的问题(这种或类似的东西是我怀疑在您的特定情况下发生的情况,因为你发布的代码不应该给出错误。)

答案 1 :(得分:1)

我猜这里发生的事情是elfile = dir('*.jpg');在本地目录中找不到任何jpeg,因此lu为空并且永远不会填充nfile。在代码中放置一个断点并检查它。我设置循环的方式是这样的:

for nfi=1:numel(elfile)

正如@Rody Oldenhuis所说,使用doc和help来更多地了解每个函数(或者当光标位于函数名称时按F1),但这应该让你开始..

%Looks for all files with extention .jpg in current directory
elfile = dir('*.jpg');

%lu and ri hold the rows, column lengths of elfile respectively
[lu ri] = size(elfile);

%creates an array of zeros of dimensions lu rows by 29 columns
feat=zeros(lu,29);

%creates an empty cell array (doc cell) dimensions lu rows by 1 
nomf=cell(lu,1); columns
for nfi = 1:lu                                          %look through all files 
    nfile = elfile(nfi).name;                           %get index nfi file
    fprintf(' feature extraction file: %s \n',nfile);   %print string
    nomf{nfi} = upper(nfile);                           %upper case
    feat(nfi,:) = feature_ex([path nfile],demo);        %some external function
end

fprintf(' \nneural network processing \n',nfile);      %print string