Csv 如何创建一个文件头和不同的变量在八度?

Csv 如何创建一个文件头和不同的变量在八度?,csv,file,printf,octave,Csv,File,Printf,Octave,我需要创建一个包含一些变量及其相应标题的文件。为此,我创建了一个数组,其中的变量使它们具有相同的大小。为了保存或创建这个文件,我尝试了很多方法,但都不能正常工作。我首先尝试了保存blblbl.txt V1 V2,但没有找到放置标题的方法。因此,我改为fprintf,正如我在Matlab论坛中发现的那样(我在Octave论坛中没有找到这样的示例),但是它与所示的示例有所不同 V1 = [1 2 3]; V2 = [4 5 6]; V = [V1.' , V2.']; fileID=fopen('P

我需要创建一个包含一些变量及其相应标题的文件。为此,我创建了一个数组,其中的变量使它们具有相同的大小。为了保存或创建这个文件,我尝试了很多方法,但都不能正常工作。我首先尝试了
保存blblbl.txt V1 V2
,但没有找到放置标题的方法。因此,我改为
fprintf
,正如我在Matlab论坛中发现的那样(我在Octave论坛中没有找到这样的示例),但是它与所示的示例有所不同

V1 = [1 2 3];
V2 = [4 5 6];
V = [V1.' , V2.'];
fileID=fopen('Pin.txt','w');
fprintf(fileID,'%12s %13s\n','V1','V2');
fprintf(fileID,'%6.6f %13.6f\n',V);
fclose(fileID);
它打印标题和两列,但首先打印
V1
的值,然后打印
V2
中的值。我的意思是:

V1 V2
1   2
3   4 
5   6
它应该是(这是在Matlab中应该发生的事情)


有人知道为什么会这样吗?或者,如果有更好的方法在倍频程中实现这一点?

与Matlab/Octave中的常规方法一样,
fprintf
将值输入。因此,您需要将
V

fprintf(fileID, '%6.6f %13.6f\n', V.');


与Matlab/Octave中的通常情况一样,
fprintf
采用中的值。因此,您需要将
V

fprintf(fileID, '%6.6f %13.6f\n', V.');

你想干什么?在我看来,你只是想创建一个csv文件(好吧,用空格代替逗号)

如果是这样,您可以使用csv相关函数。例如

pkg load io
C = vertcat( { 'V1', 'V2' }, num2cell( V ) );
cell2csv ( 'Pin.txt', C, ' ' );
在任何情况下,正如路易斯所暗示的那样,输出以这种方式出现的原因如下(摘自Matlab文档)

如果函数调用提供的输入参数多于格式说明符中的格式运算符,则会重用这些运算符

由于matlab和倍频程列的主次顺序(即下一个元素是“下面”的元素,而不是“右边”的元素),如果您希望以这种方式“重用”变量,则需要按照Luis的建议进行安排

如果matlab生成的结果是“正确的”,那么这实际上是一个matlab错误,因为在这种情况下,它应该与倍频程相同,您不应该依赖它。

您想做什么?在我看来,你只是想创建一个csv文件(好吧,用空格代替逗号)

如果是这样,您可以使用csv相关函数。例如

pkg load io
C = vertcat( { 'V1', 'V2' }, num2cell( V ) );
cell2csv ( 'Pin.txt', C, ' ' );
在任何情况下,正如路易斯所暗示的那样,输出以这种方式出现的原因如下(摘自Matlab文档)

如果函数调用提供的输入参数多于格式说明符中的格式运算符,则会重用这些运算符

由于matlab和倍频程列的主次顺序(即下一个元素是“下面”的元素,而不是“右边”的元素),如果您希望以这种方式“重用”变量,则需要按照Luis的建议进行安排


如果matlab生成的结果是“正确的”,那么这实际上是一个matlab错误,因为在这种情况下,它应该与倍频程相同,您不应该依赖它。

您是如何构建
V
使其大小为3x2的
V=[V1',V2']
?您是如何构建
V
使其大小为3x2的
V=[V1',V2']
?您好,是的,我尝试了转置,现在是正确的。非常感谢。我只是想知道为什么会发生这种情况,因为我不明白编辑中的内容怎么是正确的,但印刷号是正确的。谢谢您提供市长命令信息的专栏。@DinaF很高兴我能提供帮助。知道Matlab/Octave是column major非常有用,例如,当您使用Hello时,是的,我尝试了转置,现在是正确的。非常感谢。我只是想知道为什么会发生这种情况,因为我不明白编辑中的内容怎么是正确的,但印刷号是正确的。谢谢您提供市长命令信息的专栏。@DinaF很高兴我能提供帮助。知道Matlab/Octave是column major是非常有用的,例如,当你使用Hi时,感谢这个其他选项,我试过了,效果很好。