2015-06-26 70 views
3

我是新來的Matlab和我試圖寫一個程序的功能是在.m文件中聲明之前應搜索管道符號,|的開始一個特定的字符。查找在.m文件

例如:

% | 
function y = add(x,z) 
    y = x+z 
end 

我對如何進行的想法,但我無法爲它編寫代碼:

  1. 詢問用戶應解析文件
  2. 打開文件
  3. 跳過存在於文件
  4. 提取第一開頭任何空行取決於|符號

的情況下我已經能夠投入到目前爲止的代碼在函數聲明之前發表意見,着手:

function y = filesearch() 
%Ask user for file to parse 
[fileName, filePath] = uiputfile('*.m','Choose file you want to parse'); 
% Open the file: 
fid = fopen(filePath); 

% Skip empty lines: 
defLine = ''; 
while all(isspace(defLine)) 
    defLine = strip_comments(fgets(fid)); 
end 
% Check for presence of | 

正如你看到的,我無法思考可以刪除註釋(如果存在)並檢查是否存在管道符號的行。

此外,雖然它不是當前的優先權如果它符合某些參數,我想在每行的末尾使用此符號。 例如:

Algebraic(否|於線結束符號)(|在dydt語句的末尾)

R1 = 1; R2 = 2; R3 = 3; 
Rs = R1 + R2 + R3; 

Differential

% | 
function dydt = vanderpoldemo(t,y,Mu) 
%VANDERPOLDEMO Defines the van der Pol equation for ODEDEMO. 
dydt = [y(2); Mu*(1-y(1)^2)*y(2)-y(1)]; % | 

對於上述差速器殼我認爲一個正則表達式將需要(一旦INTIAL |在函數聲明之前發現)來檢查的|一個存在t聲明不是代數的行的結尾。

我很感激如何提取任何幫助或建議,並檢查初步意見,如果,可能的話我怎麼能實現我的另一個問題,我應該檢查是否存在符號在每行的末尾。

回答

1

下面的代碼通過線經過一個文件行並搜索管道符號中的註釋。它停止它後發現:

fid = fopen('add.m'); 
% Check for presence of | in a comment 
tline = fgetl(fid); 
while ischar(tline) 
    if strfind(tline,'%')  % find comments 
     if strfind(tline,'|') % find pipe 
      disp(tline)   % do something 
      break;    % stop while loop 
     end 
    end 
    tline = fgetl(fid); 
end 
fclose(fid);