在MATLAB中将向量保存为.csv文件

4
我有一个大小为 6 x 1 的向量 y = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
我想将这个向量保存到一个 .csv 文件 中,但是我希望我的 .csv 文件 的格式如下所示: enter image description here 我在 MATLAB 中编写了以下代码:
csvwrite('my_file.csv', y)

我如何编辑我的代码才能得到和上面那个文件一样的结果?

非常感谢您的任何帮助。

3个回答

5
您可以像这样做(假设y是一个列向量):
dlmwrite('my_file.csv',[[1:length(y)]',y])

例如,
y=rand(10,1)
dlmwrite('my_file.csv',[[1:length(y)]',y])

现在,my_file.csv 文件的内容如下:

1,0.70605
2,0.031833
3,0.27692
4,0.046171
5,0.097132
6,0.82346
7,0.69483
8,0.3171
9,0.95022
10,0.034446

如果您的原始向量是行向量(而不是列向量),那么问题会变得更加简单。

y=rand(1,10)
dlmwrite('my_file.csv',[1:length(y);y]')

此外,如果您希望文件中也包含标题,可以按照以下方式操作:
y=rand(1,10);
name1 = 'InD';
name2 = 'y';

delimiter = ',';
header = [name1, delimiter, name2];
dlmwrite('my_file.csv',header,'delimiter','');
dlmwrite('my_file.csv',[1:length(y);y]','-append','delimiter',delimiter);

你可以更改y为你的向量,然后根据你的喜好定义name1name2

编辑: 刚刚注意到MATLAB目前不建议使用dlmwrite,在这种情况下,这是一个替代方法。

y = rand(1,10);
name1 = 'InD';
name2 = 'y';

header = {name1,name2};
output = [header; num2cell([1:length(y);y]')];
writecell(output,'my_file.csv')

你好,我不想要一个txt文件。我想要一个如我问题中所提到的.csv文件。谢谢。 - Christina
抱歉,你是对的,我刚刚修复了它。请注意,扩展名并不确定文件的内容,它只是名称的一部分。 - myradio
完美。非常感谢你。 - Christina
1
我很高兴它有所帮助。 - myradio

1
在Matlab中,您可以创建一个帮助函数来编写具有标题的csv文件,如下所示:
function to_csv(filename, data, header)
    datatable = array2table(data);
    datatable.Properties.VariableNames(1:length(header)) = header;
    writetable(datatable, filename);
end

使用示例:

y = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6]';
InD = (1:length(y))';
to_csv('my_file.csv', [InD, y], ["InD", "y"]);

1
您可以按照以下方式创建矩阵,并将其保存到CSV文件中(以下,我使用writematrix代替csvwrite)。
y_matrix = [1 0.1; 2 0.2; 3 0.3; 4 0.4; 5 0.5; 6 0.6]
writematrix(y_matrix, 'my_file.csv') 

你可以使用所需的策略来构建此矩阵;例如,可以通过连接两个向量来创建矩阵。第一个向量可以是具有第二个向量长度的范围。

你好,我只想要A和B作为第一行,然后自动为每个y的值开始索引。 - Christina
要编写列A,您可以执行类似于a = 1:length(y);的操作。要包括标题,您可以遵循此建议:https://www.mathworks.com/matlabcentral/answers/246922-how-to-add-headers-to-a-data-matrix - nunohpinheiro
抱歉我的问题表述不够清晰,我已经进行了编辑。 - Christina
没问题,我也编辑了我的上一个回答 :) - nunohpinheiro
我现在很清楚我想要什么了。哈哈哈,你对我真是耐心啊 :) - Christina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接