matlab-dlmwrite和diary输出数据

本文介绍了MATLAB中使用diary命令记录会话的过程及dlmwrite函数的应用。通过实例展示了如何开启和关闭diary记录功能,记录命令及其输出,并演示了如何利用dlmwrite将矩阵写入ASCII文件。

diary用于记录MATLAB窗口的输入 的命令和响应输出,diary off关闭记录,diary on打开记录

 

>> diary('log.txt')
>> eval('aa='aaaabbb'')
??? eval('aa='aaaabbb'')
              |
Error: Unexpected MATLAB expression.
 
>> eval('aa=23455')

aa =

       23455

>> double('abcdef')

ans =

    97    98    99   100   101   102

>> integer('abcdef')
??? Undefined function or method 'integer' for input arguments of type
'char'.
 
>> int('abcdef')
 
ans =
 
abcdef^2/2
 
>> diary off
>>

 

'log.txt'内容如下:

eval('aa='aaaabbb'')
??? eval('aa='aaaabbb'')
              |
{Error: Unexpected MATLAB expression.
}
eval('aa=23455')

aa =

       23455

double('abcdef')

ans =

    97    98    99   100   101   102

integer('abcdef')
{??? Undefined function or method 'integer' for input arguments of type
'char'.
}
int('abcdef')
 
ans =
 
abcdef^2/2
 
diary off

 

dlmwrite将矩阵室到ascii定界符文件中

>> P=[0 1 0 1 1;1 1 1 0 0]

P =

     0     1     0     1     1
     1     1     1     0     0

>> dlmwrite('aaa.txt',P)

aaa.txt内容如下:

0,1,0,1,1
1,1,1,0,0

 

 

 

 

 

 

>> csvwrite('ss.dat',P)
>>

### 使用 `dlmwrite` 函数以十六进制格式输出数据 为了实现将数值型数据通过 `dlmwrite` 函数以十六进制字符串形式存储至文本文件,在实际操作过程中需要先将整数类型的变量转换成对应的十六进制表示法,因为 `dlmwrite` 并不直接支持十六进制格式的写入[^2]。 下面是一个具体的例子来展示这一过程: 假设有一个包含正整数的向量 A 需要被转化为十六进制并保存到名为 'hexData.txt' 的文件里: ```matlab % 创建一个简单的整数向量作为示例数据 A = uint8([10, 255, 16]); % 将每个元素转为十六进制字符,并组合成一列字符串数组 hexStrArray = cellstr(dec2hex(A)'); % 转化后的结果不再是数字而是字符类型的数据, % 所以这里使用cell2mat并不适用;保持其为元胞数组的形式即可。 % 接下来可以利用fprintf逐行打印这些字符串到目标文件中, % 或者如果坚持要用dlmwrite的话,则需进一步处理. % 对于想要继续采用dlmwrite的情况,考虑到它主要用于浮点或整形数值间的分隔符分割文件创建, % 当前场景下更推荐的做法是构建一个新的临时矩阵/数组用于承载原始值及其相应的十六进制表达. tempMatrix = [num2cell(A), hexStrArray]; % 组合原数值与对应十六进制串 % 现在可以通过dlmwrite写出这个复合结构体; % 不过需要注意的是,这样做的时候应该指定合适的参数使得不同部分之间有明显区分。 filename = 'hexData.txt'; delimiter = '\t'; % 列之间的间隔符设为空白键或其他易于解析的符号 formatSpec = '%d\t%s\n'; % 定义每一对(十进制数, 十六进制字符串)如何布局 appendMode = '-append'; % 初始化文件(清除已有内容) fid = fopen(filename,'w'); fclose(fid); for i=1:length(tempMatrix) dlmwrite(filename,tempMatrix{i}, 'delimiter', delimiter,... 'precision','%s','roffset',i-1); end ``` 上述代码片段展示了如何准备待写的十六进制数据以及调用 `dlmwrite` 来完成最终的任务。值得注意的是,由于 `dlmwrite` 主要是针对纯数值的操作设计,因此当涉及到非标准数值格式如本案例中的十六进制时,可能需要额外的工作流来进行适配。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值