2015-02-09 24 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。这可能不是做这个测试的最好方法,但它可以作为我想的例子。

    请评论,如果这不是你想知道的。