为什么这个matlab代码不起作用?

时间:2015-03-28 01:29:59

标签: matlab

我正在尝试编写脚本以从其他脚本文件中删除注释行。这就是我的尝试:

fid = fopen('correct_answer.m');
aline = {};
counter = 1;
while ~feof(fid)
aline{counter} = fgetl(fid);
if aline{counter}(1) == '%'
    aline{counter} = '';
end
counter = counter + 1;
end

这是我得到的错误:

Attempted to access aline.%cell(1); index out of bounds because numel(aline.%cell)=0.

Error in hw2 (line 8)
    if aline{counter}(1) == '%'

如果我在没有while循环的情况下运行它可以正常工作。这个怎么样? 此外,如果您碰巧知道一种更简单/有效的方法来删除也适用的注释行;)

1 个答案:

答案 0 :(得分:0)

问题是你有时会读取空行,而你无法访问空行的第一个元素。另外,您可能在有效代码行的末尾有注释,此代码应该可以使用

fid = fopen('correct_answer.m');
aline = {};
counter = 1;
while ~feof(fid)
   aline{counter} = fgetl(fid);
   if ~isempty(aline{counter})
      k = strfind(aline{counter}, '%');
      aline{counter}(k:end) = '';   
   end
   counter = counter + 1;
end