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