我是一名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);
答案 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