我必须编写一个MATLAB函数,其中包含以下描述:
function counts = letterStatistics(filename,allowedChar,N)
此函数应该打开由filename指定的文本文件并读取其全部内容。将解析内容,以便删除不在allowedChar中的任何字符。最后,它将返回解析文本中所有N符号组合的计数。这个函数应该存储在一个文件名“letterStatistics.m”中,我根据我的教授的名字列出了一些命令以及如何组织这个函数的事情。讲义:
一个。用户指定0或负值N。
湾用户不将参数N传递给函数,即counts = letterStatistics(filename,allowedChar)
使用fopen函数,打开文件文件名,以便在文本模式下阅读。
使用函数fscanf,将打开文件的所有内容读入字符串变量。
我知道有一个MATLAB函数可以将字符串中的所有字母转换为小写字母。由于我的分析会忽略大小写,我必须在文本字符串上使用此函数。
按如下方式解析此字符串变量(使用逻辑索引或正则表达式 - 不要使用for循环):
一个。我们想删除所有换行符而不发生这种情况:
例如
在我年轻,更脆弱的年代,父亲给了我一些建议,从那时起我一直在脑海里翻身。
在我更年轻,更易受伤害的年代,我的父亲给了我一些建议,因为我以后一直在我的仆人身上。
用一个空格替换所有换行符(特殊字符\ n):' &#39 ;.
湾我们将带连字符的单词视为两个单独的单词,因此对于连字符' - '也是如此。
℃。删除任何不在allowedChar中的字符。提示:使用带有空字符串的regexprep''作为替换的论据。
d。任何两个或多个空格的序列应由单个空格替换。
使用提供的permsRep函数,在allowedChar中创建符号的所有可能N符号组合的矩阵。
使用strfind函数,将解析文本中的所有N符号组合计算为数组计数。不要像在C程序中那样遍历解析文本中的每个字符。
使用fclose关闭打开的文件。
这是我的问题:所以你可以看到我列出了这个功能是什么,它应该做什么,以及使用哪些命令(fclose等)。麻烦的是,我知道关闭文件需要使用' fclose'但除此之外,我不确定如何执行#8。整个功能创建也是如此。我对如何使用命令创建函数有一个模糊的想法,但我无法生成实际的代码..我应该如何开始?任何指导/提示都会受到重视,因为我有程序员和#39;阻止,我无法开始!
答案 0 :(得分: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。这可能不是进行此测试的最佳方式,但我猜它就是一个例子。
如果这不是您想知道的,请发表评论。