当前位置: 首页 > 知识库问答 >
问题:

MATLAB fprintf打印单元数组到文本文件

田博超
2023-03-14

我试图使用MATLAB fprintf命令将存储在向量中的字符串分隔表打印到文本文件中。从向量中选择和打印哪些字符串取决于在程序的main while循环中构造的矩阵。然而,当我试图运行代码时,MATLAB给了我一个错误,即“下标索引必须是正整数或逻辑索引”。给出了一个示例矩阵和示例字符串数组,以及我当前的fprintf代码。我真的很想了解这里发生了什么,以及关于如何更好地设置它的任何希望或指针。矩阵和单元数组是我在运行程序时得到的实际例子。提前感谢!

Pitches={'Fastball','Curveball','Screwball','Riseball','Changeup','Dropball'};
tp={'Strike','Ball'};
ResultHit={'Single','Double','Triple','Home Run','Bunt','ROE'};
ResultOut={'Strikeout','Groundout','Flyout','Foulout'};

M= [4,1,0,0;2,2,0,0;3,1,0,0;5,1,1,0];


fileID = fopen('gamedata.txt','w');

for i=1:length(M)

    fprintf(fileID,'%s %s %s %s\n',Pitches{M(i,1)},tp{M(i,2)},...
    ResultHit{M(i,3)},ResultOut{M(i,4)});

end

fclose(fileID);

共有1个答案

满子实
2023-03-14

M矩阵的第三列和第四列为零:

M =

 4     1     0     0
 2     2     0     0
 3     1     0     0
 5     1     1     0

因此,当代码开始在for循环中迭代时,M(1,3)和M(1,4)都是零,并且是ResultHit和ResultOut数组中的无效索引……因此会出现错误消息(索引必须是正整数)。

我认为您需要的是ResultHit和ResultOut数组中的'N/A'字符串,它们对应于该球场上没有击球或没有出局。它们都可以位于数组的第一个位置,上面的M更改为

M =

 4     1     1     1
 2     2     1     1
 3     1     1     1
 5     1     2     1
 类似资料:
  • 问题内容: 我想将数组打印到文件中。 我希望文件看起来像这样的代码完全相似。 假设$ abc是一个数组。 是否有任何一种解决方案,而不是每次外观都是常规的。 PS-我目前使用序列化,但是我想使文件可读,因为使用序列化数组很难读取。 问题答案: 无论是或将返回输出,而不是打印出来的。 PHP手册中的示例 然后,您可以使用保存。或在写入文件时直接将其返回:

  • 问题内容: 我有一个文本文件,需要将其打印到特定的网络打印机。我知道打印机的名称。 到目前为止,我已经创建了Printable类来打印文件(票证)。 我这样称呼TicketPrintPage: 它的工作原理还不错,但是: -我的文本不多于一页(找到了一些算法,但是很好) -我不知道打印机何时完成打印,如果我尝试打印两页如果打印机连续打印了多张票证,则会返回“打印机未就绪”消息。 所以问题又来了:没

  • 问题内容: 我正在使用Python打开文本文档: 我想将字符串变量的值替换为文本文档。有人可以让我知道怎么做吗? 问题答案: 如果使用上下文管理器,则将自动为你关闭文件 如果你使用的是Python2.6或更高版本,则最好使用 对于python2.7及更高版本,你可以使用代替 在Python3中,该函数有一个可选参数 Python3.6引入了f字符串作为另一种选择

  • 当我打印出 我得到的回报是:

  • 我有一个关于读取和创建数据集的问题。我有一个文本文件,其中包含: 我这样实现了这段代码: 而不是有这样的结果: 它给了我一个结果: 谁能告诉我怎么解决这个问题?

  • 问题内容: 为什么尝试直接打印到文件而不是产生以下语法错误: 从帮助(builtins),我有以下信息: 那么将标准流打印写入更改为什么正确的语法呢? 我知道有不同的也许更好的写入文件的方法,但是我真的不明白为什么这应该是语法错误… 一个很好的解释将不胜感激! 问题答案: 如果要在Python 2中使用该函数,则必须从导入: 但是,即使不使用该函数,也可以达到相同的效果: