【发布时间】:2015-11-12 09:00:18
【问题描述】:
我正在寻找一种从 c 代码十六进制数组转换为 matlab 的简单方法
可用的 C 代码格式: const uint16_t AUDIO_SAMPLE[] = {0x4952, 0x4646, 0x4f6e, 0xf, 0x4157, 0x4556, 0x6d66, 0x2074, 0x12, 0, 0x1}
所需的 Matlab 格式: AUDIO_SAMPLE = [18770 17990 20334 15 16727 17750 28006 8308 18 0 1]
虽然转换为小数很简单,但我必须转换一个非常大的数组。我正在使用嵌入式平台,因此无法将数字写入简单的文本文件以供以后在 matlab 中读取。转换代码最好用matlab写。
编辑:
到目前为止能够摆脱0x。使用 eval 函数后获取向量失败,如下所示:
a='0x4952, 0x4646, 0x4f6e'; %Given
b = strrep(a, '0x', '') ; %Returns 4952, 4646, 4f6e
x = eval( [ '[', b, ']' ] ) %
【问题讨论】:
-
是否要从 C 源代码/头文件中提取值?
-
@KlasLindbäck 实际上,我有一个作为微控制器 c 代码的音频剪辑。我需要在 Matlab 中对其进行信号处理。稍后我可能也需要做相反的事情,即将 matlab 向量转换为 C-Array。
-
是一次性的还是需要多次这样做?
-
目前只有一次。
-
如果你有源代码,这个问题与“嵌入式”有什么关系?这是主机上的简单文件转换!使用 Python 转换文件。如果只需要一次,只需去掉 C 元素,留下逗号分隔的值,然后提供给 Python 程序。