Matlab:使用importdata时,如何将输出保存到文件并覆盖旧值?

Matlab:使用importdata时,如何将输出保存到文件并覆盖旧值?,matlab,matrix,Matlab,Matrix,我正在使用importdata删除标题并将文件导入我的工作区 该文件包含旋转矩阵和平移向量。 在我的matlab脚本中,我将旋转矩阵转换为四元数。 在我的输出文件中,我想要四元数加上平移向量,也就是说,我想要用四元数的新值替换旋转矩阵中的旧值 但是,我只能将四元数输出到命令窗口,但不知道如何替换这些值 这是我的密码: path = '\filepath'; [head DELIM NHEADERLINES] = importdata([path],' ',9); Rotation = head.

我正在使用importdata删除标题并将文件导入我的工作区

该文件包含旋转矩阵和平移向量。 在我的matlab脚本中,我将旋转矩阵转换为四元数。 在我的输出文件中,我想要四元数加上平移向量,也就是说,我想要用四元数的新值替换旋转矩阵中的旧值

但是,我只能将四元数输出到命令窗口,但不知道如何替换这些值

这是我的密码:

path = '\filepath';
[head DELIM NHEADERLINES] = importdata([path],' ',9);
Rotation = head.data(:,1:9); 
Translation = head.data(:,10:12); 
RotationMatrix= zeros([3 3 size(Rotation,1)]);

for i=1:size(Rotation,1)
RotationMatrix(:,:,i) = [Rotation(i,1:3); Rotation(i,4:6); Rotation(i,7:9)];
end

Quaternion = SpinCalc('DCMtoQ',RotationMatrix,0.1,0);
如何将四元数放入原始文件并覆盖旋转矩阵?
提前感谢您的帮助

在您的情况下,更推荐使用
dlmread
dlmwrite

M = dlmread(filename,' ',9,0); % start from row 10, column 1 Rotation = M(:,1:9); Translation = M(:,10:12); . . . dlmwrite(Quaternion,'delimiter',' ','newline','pc'); M=dlmread(文件名,,,9,0);%从第10行第1列开始 旋转=M(:,1:9); 翻译=M(:,10:12); . . . dlmwrite(四元数,'delimiter','newline','pc'); 如果您希望修改原始文件而不是替换它,请使用以下命令

fileID = fopen(filename,'r+'); % with read and write permission fseek(fileID, pos, 'bof'); % where pos is the starting position of the bytes you want to read M = fscanf(fileID, repmat('%g ',1,12), nlines); % read 12 columns of numbers for at most n lines. . . . fseek(fileID, pos, 'bof'); % go back to the position fprintf(fileID, repmat('%g ',1,12), Quaternion); fileID=fopen(文件名'r+');%具有读写权限 fseek(文件ID,位置,'bof');%其中,pos是要读取的字节的起始位置 M=fscanf(文件ID,repmat('%g',1,12),nlines);%读取12列数字,最多n行。 . . . fseek(文件ID,位置,'bof');%回到原来的位置 fprintf(文件ID,repmat('%g',1,12),四元数); 这只是一个建议。以上代码可能无法按预期运行,因此我建议您阅读文档以了解更多信息。干杯