【问题标题】:Adding elements to a text file using Matlab使用 Matlab 将元素添加到文本文件
【发布时间】:2017-07-23 23:48:37
【问题描述】:

假设我有一个包含以下数组的文本文件:

[1]
[1, 2, 6, 7, 4]
[1, 2, 6, 7, 8, 3, 4]
[1, 2, 6, 5, 7, 4]
[1, 2, 6, 5, 7, 8, 3, 4]
[1, 2, 3, 8, 6, 7, 4]
[1, 2, 3, 8, 6, 5, 7, 4]
[1, 2, 3, 4]
[2, 6, 7, 4]
[2, 6, 7, 8, 3, 4]
[2, 6, 5, 7, 4]
[2, 6, 5, 7, 8, 3, 4]
[2, 3, 8, 6, 7, 4]
[2, 3, 8, 6, 5, 7, 4]
[2, 3, 4]
[3, 8]
[8, 6, 7]
[8, 6, 5, 7]
[5]

我想将每个数组的第一个元素附加到相应数组的末尾。 我希望我的输出看起来像这样:

[1, 1]
[1, 2, 6, 7, 4, 1]
[1, 2, 6, 7, 8, 3, 4, 1]
[1, 2, 6, 5, 7, 4, 1]
[1, 2, 6, 5, 7, 8, 3, 4, 1]
[1, 2, 3, 8, 6, 7, 4, 1]
[1, 2, 3, 8, 6, 5, 7, 4, 1]
[1, 2, 3, 4, 1]
[2, 6, 7, 4, 2]
[2, 6, 7, 8, 3, 4, 2]
[2, 6, 5, 7, 4, 2]
[2, 6, 5, 7, 8, 3, 4, 2]
[2, 3, 8, 6, 7, 4, 2]
[2, 3, 8, 6, 5, 7, 4, 2]
[2, 3, 4, 2]
[3, 8, 3]
[8, 6, 7, 8]
[8, 6, 5, 7, 8]
[5, 5]

如何在 matlab 中做到这一点?

【问题讨论】:

  • 你知道所涉及的步骤:读取文本文件的一行,将第一个数组元素复制到末尾,将该行写入输出文件。哪个部分不适合您?你有试过的代码吗?

标签: matlab


【解决方案1】:

我的 Matlab (2014b) 不像 2016 年及以后的版本那样支持字符串中的文本。我无法测试,但based on this page 下面显示的过程应该也可以使用,只需将单元格适当地调整为字符串数组即可。 我会发表评论,但我还不能。方便地明确显示您的数据如何,例如,

str = ["Mercury","Gemini","Apollo";
   "Skylab","Skylab B","ISS"] 

a={'alpha','beta','gamma'};

拥有不同大小矩阵的常用方法是使用元胞数组。如果是这种情况,您可以执行以下操作:

a={'alpha','beta','gamma'};
for i=1:numel(a), 
      a{i}=strcat(a{i},a{i}(1)); 
end
a = 
   'alphaa'    'betab'    'gammag'

如果是其他格式,您可以相应地调整文本的调用。

另外,在the same link as above 的部分(拆分、连接和排序字符串数组)中,您可能会以更简单的方式得到答案(但我无法测试)。

Edit1:解释有误!

【讨论】:

  • 数据类型为字符串
【解决方案2】:

这段代码 sn-p 可以解决问题:

fid = fopen('filename.txt');
line1 = fgetl(fid);
p =str2num(line1);
a=[p,p(1)];
while ischar(line1)
    line1 = fgetl(fid);
    if line1(1)==-1
        break;
    end
    p=str2num(line1);
    a=[p,p(1)];
end
fclose(fid);

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2014-09-12
    • 1970-01-01
    • 2014-04-13
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多