在Matlab中使用fwrite()行写入文件

在Matlab中使用fwrite()行写入文件,matlab,hex,fwrite,Matlab,Hex,Fwrite,fwrite在Matlab中按列顺序写入。这对我来说是个问题,因为我需要写入十六进制值,这些值应该按字节读取,然后转到下一行,依此类推。有没有办法做到这一点?下面是我的代码 hexvec = dec2hex(bytevec,2); fileID = fopen('my_flipped_data_new.bin','wt'); fwrite(fileID, hexvec); fclose(fileID); 谢谢 我想我明白你的意思了 代码: 输出(文本文件): @AsantosRiberio您的

fwrite在Matlab中按列顺序写入。这对我来说是个问题,因为我需要写入十六进制值,这些值应该按字节读取,然后转到下一行,依此类推。有没有办法做到这一点?下面是我的代码

hexvec = dec2hex(bytevec,2);
fileID = fopen('my_flipped_data_new.bin','wt');
fwrite(fileID, hexvec);
fclose(fileID);

谢谢

我想我明白你的意思了

代码:

输出(文本文件):


@AsantosRiberio您的代码是正确的;唯一的问题是长度(F),它给出了“索引超过矩阵维数”错误。要避免这种情况,只需使用

[rw co] = size(new_converted);
new_converted=[char(new_converted),repmat(' ',**rw**,1)]';

谢谢大家的帮助

解决问题的两种方法:1)按列顺序保存整个文件,重新读取,横切矩阵,然后再次写入;2) 获取要保存在文件中的完整矩阵,并以所需的方向写入(如果需要,进行横向扫描)。如果你的问题更复杂,请提供一个例子。你能举个例子来澄清一下吗,因为现在看来转置矩阵可以解决你的问题problem@Nishant:是的,它在一定程度上是连续的,但它将其视为连续的(参见上图)。我想让它变成单元式的,比如0F 4B 8C…等等,必须澄清一下:这些数据是应该稍后在matlab中使用的,还是您正在尝试将其导出到另一个设备/程序?在这种情况下,这个设备/程序是如何工作的?从你的例子来看,它似乎是一个横向解,因此你会得到0F;4B;。。。是的,MATLAB以列主格式编写文件。因此,您需要考虑到这一点,并在必要时转换数据。@ASantosRiberio:我现在就知道了。索引超过了矩阵维度。打印文本时出错(第23行)F=[char(F),repmat('',length(F),1)]我写的代码是正确的。我不知道您是如何根据错误执行的。抱歉,但我仍然无法理解您的问题。从矩阵的大小或长度中使用第一个维度是完全相同的。请参见下面的示例。a=一(3,2);[rw,co]=尺寸(a);rw长度(a)a=一(5,2);[rw,co]=尺寸(a);rw长度(a)a=一(7,2);[rw,co]=尺寸(a);rw length(a)是的..我也更改了变量F的名称,但问题仍然存在…我想这可能是由于我一直使用的变量的类,而length()可能不起作用。。。例如:当我做class(new_converted)时,它返回char,然后我做length(new_converted),我得到了相同的错误…new_converted是F的新名称
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 
[rw co] = size(new_converted);
new_converted=[char(new_converted),repmat(' ',**rw**,1)]';