使用Matlab向文本文件中添加元素

使用Matlab向文本文件中添加元素,matlab,Matlab,假设我有一个由以下数组组成的文本文件: [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

假设我有一个由以下数组组成的文本文件:

[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(2014b)不支持字符串中的文本,2016年及以后的版本都不支持。我无法测试,但下面所示的过程也应该可用,只需对单元格进行适当的调整以适应字符串数组即可。 我会发表评论,但现在还不能。明确显示您的数据的方式很方便,例如

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

具有不同大小矩阵的一种常用方法是使用单元数组。如果是这样的话,您可以执行以下操作:

a={'alpha','beta','gamma'};
for i=1:numel(a), 
      a{i}=strcat(a{i},a{i}(1)); 
end
a = 
   'alphaa'    'betab'    'gammag'
如果使用其他格式,则可以相应地调整文本的调用

另外,在的部分(拆分、联接和排序字符串数组)中,您可以用更简单的方法得到答案(但我无法测试)


编辑1:在解释上犯了一个错误

此代码片段实现了以下功能:

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);

数据类型是字符串,您知道其中涉及的步骤:读取文本文件的一行,将第一个数组元素复制到末尾,将该行写入输出文件。哪一部分不适合你?你有没有试过的代码?
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);