2015-02-09 79 views
-1

具有基本功能的創建指導我必須寫一個MATLAB功能在下面的描述:需要在MATLAB

功能計數= letterStatistics(文件名,allowedChar,N)

此功能應該打開一個文本文件指定的文件並讀取其全部內容。內容將被解析,以便任何不在allowedChar中的字符被移除。最後,它將返回解析文本中所有N符號組合的計數。該功能應存放在一個文件名爲「letterStatistics.m」和我做了一些命令和功能如何應根據我教授的講義組織的事情的清單:

  1. 通過設置開始功能N的默認值爲1的情況:

a。用戶指定N的0或負值。

b。用戶不參數n通入功能,即,計數= letterStatistics(文件名,allowedChar)

  • 使用fopen函數,打開文件的文件名在文本讀取模式。

  • 使用函數fscanf,將打開的文件的所有內容讀入字符串變量。

  • 我知道存在一個MATLAB函數來將字符串中的所有字母都變成小寫。由於我的分析將忽略大小寫,因此我必須在文本字符串上使用此函數。

  • 解析字符串變量如下(使用邏輯索引或正則表達式 - 不要for循環使用):

  • 一個。我們希望刪除所有換行符,而不會發生這種情況:
    在我更年輕,更脆弱的年代,我的父親給了我一些建議,從那以後我一直在思考着什麼。
    在我更年輕,更容易受傷的年齡段,我的父親給了我一些建議,因爲我一直在鄙視我。

    用一個空格替換所有換行符(特殊字符\ n):''。

    b。我們將把帶連字符的單詞當作兩個單獨的單詞,因此連字符' - '也是一樣。

    c。刪除任何不在allowedChar中的字符。提示:使用regexprep和一個空字符串''作爲替換參數。 d)。任何兩個或多個空格的序列應該由一個空格替換。

    1. 使用提供的permsRep函數,爲allowedChar中的符號創建所有可能的N符號組合的矩陣。

    2. 使用strfind函數,將解析文本中的所有N符號組合計數到數組中。不要像在C程序中那樣遍歷解析文本中的每個字符。

    3. 使用fclose關閉打開的文件。

    這裏是我的問題:所以你可以看到我做的功能是什麼,應該怎麼做這個名單,並且使用命令(FCLOSE等)。麻煩的是,我知道關閉文件涉及'fclose'的使用,但除此之外我不知道如何執行#8。整個功能創作也是如此。我有一個模糊的想法,如何使用什麼命令創建一個函數,但我無法生成實際的代碼..我該如何開始?任何指導/提示都會被認真的讚賞,因爲我遇到了程序員的阻礙,無法啓動!

    +1

    只要在文檔中使用'fclose',沒有什麼棘手的。沒有人會爲你寫代碼,只是開始寫你寫的東西。嘗試'N = 1;'設置'N'的值並從那裏開始。 – David 2015-02-09 04:54:58

    回答

    0

    我認爲你是matlab新手,所以文檔可能很複雜。問題的根源在於我猜測文件I/O(輸入/輸出)的基本理解。因此,當你使用fopen打開文件時,matlab會返回一個指向該文件的指針,該指針通常稱爲文件ID。當您撥打fclose時,您希望matlab瞭解您要關閉該文件。所以你必須做的是使用fclose以及正確的文件ID。

    fid = open('test.txt'); 
    fprintf(fid,'This is a test.\n'); 
    fclose(fid); 
    fid = 0; % Optional, this will make it clear that the file is not open, 
         % but it is not necessary since matlab will send a not open message anyway 
    

    關於創建函數的語法是這樣的:

    function out = myFcn(x,y) 
    z = x*y; 
    fprintf('z=%.0f\n',z); % Print value of z in the command window 
    out = z>0; 
    

    這是一個檢查,如果兩個數字是積極的,返回true它們的功能。如果不是,則返回false。這可能不是做這個測試的最好方法,但它可以作爲我想的例子。

    請評論,如果這不是你想知道的。