【问题标题】:need guidance with basic function creation in MATLAB需要在 MATLAB 中创建基本函数的指导
【发布时间】:2015-02-09 04:25:34
【问题描述】:

我必须写一个 MATLAB 函数,描述如下:

函数计数 = letterStatistics(filename, allowedChar, N)

这个函数应该打开一个由文件名指定的文本文件并读取其全部内容。将解析内容,以便删除任何不在 allowedChar 中的字符。最后,它将返回解析文本中所有 N 符号组合的计数。这个函数应该存储在一个文件名“letterStatistics.m”中,我根据教授的讲义列出了一些命令和函数应该如何组织的东西:

  1. 通过将 N 的默认值设置为 1 来开始函数:

一个。用户指定 N 为 0 或负值。

b.用户没有将参数 N 传递给函数,即 counts = letterStatistics(filename, allowedChar)

  1. 使用 fopen 函数,打开文件文件名以文本模式读取。

  2. 使用函数 fscanf,将打开文件的所有内容读入字符串变量。

  3. 我知道有一个 MATLAB 函数可以将字符串中的所有字母转换为小写。由于我的分析将忽略大小写,因此我必须在文本字符串上使用此函数。

  4. 按如下方式解析此字符串变量(使用逻辑索引或正则表达式 - 不要使用 for 循环):

一个。我们希望删除所有换行符而不发生这种情况:
例如 在我年轻和脆弱的岁月里,父亲给了我一些建议,从那以后我一直在脑海中反复思考。
在我更年轻、更脆弱的岁月里,父亲给了我一些建议,从那以后我一直在脑海中反复思考。

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

b.我们将带连字符的单词视为两个单独的单词,因此对连字符“-”执行相同的操作。

c。删除任何不在 allowedChar 中的字符。提示:使用带有空字符串 '' 的 regexprep 作为替换的参数。

d。任何两个或多个空格的序列都应替换为单个空格。

  1. 使用提供的 permsRep 函数,在 allowedChar 中创建所有可能的 N 符号组合的矩阵。

  2. 使用 strfind 函数,将已解析文本中的所有 N 符号组合计数到数组计数中。不要像在 C 程序中那样遍历已解析文本中的每个字符。

  3. 使用 fclose 关闭打开的文件。

这是我的问题:如您所见,我已经列出了函数是什么、它应该做什么以及使用哪些命令(fclose 等)。问题是我知道关闭文件涉及使用'fclose',但除此之外我不确定如何执行#8。整个函数创建也是如此。我对如何使用什么命令创建一个函数有一个模糊的想法,但我无法生成实际的代码。我应该如何开始?任何指导/提示将不胜感激,因为我遇到了程序员的障碍并且无法开始!

【问题讨论】:

  • 只需使用文档中的fclose,没有什么棘手的。没有人会为您编写代码,只需开始执行您编写的代码即可。尝试N=1; 设置N 的值并从那里开始。

标签: string matlab function matrix


【解决方案1】:

我认为您是 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。这可能不是进行此测试的最佳方法,但我猜它可以作为示例。

如果这不是您想知道的,请发表评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多