首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB嵌入式编码器: uint8的fft2运算?

MATLAB嵌入式编码器: uint8的fft2运算?
EN

Stack Overflow用户
提问于 2009-11-13 22:33:17
回答 3查看 968关注 0票数 2

我想使用MATLAB Embedded Coder生成一些代码,它在uint8数据类型上运行fft2操作。最终的应用程序将操作高达4096到4096的图像,所以我希望现在不必使用让emlc编译代码所需的double (~134MB双倍数据,而不是~16MB)输入。

下面是我正在运行的示例:

代码语言:javascript
复制
%#eml
function bar = emlc_test(foo)
    bar = fft2(foo);
end

使用编译器命令:

代码语言:javascript
复制
emlc -T rtw emlc_test -c -report -v -eg { zeros(32,32,'uint8') }

这会抛出错误:

代码语言:javascript
复制
??? Function 'fft' is not defined for values of class 'uint8'.

'uint8'更改为'double'时,相同的代码/编译命令也可以正常工作

但是看一下生成的代码,似乎处理应该能够在uint8空间中运行。是否缺少一个标志来允许我的fft2操作在uint8数据而不是double数据上工作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-13 23:14:12

对双精度或单精度类型的要求是明确的。

看起来你可能不得不使用一个基于单数的“怪物”(*)矩阵作为输入。我认为这样做的原因是MATLAB无法决定输出中所需的类型,而不是与输入相同。

(**)实际上没有那么大:单一类型只是你想要的4倍。

票数 4
EN

Stack Overflow用户

发布于 2009-11-13 23:13:48

不,不可能。快速傅立叶变换和fft2仅支持单浮点和双浮点。你对此无能为力。如果你想节省内存空间,可以试试单浮点数。

票数 2
EN

Stack Overflow用户

发布于 2009-11-14 03:25:00

如果你真的需要优化,我认为你唯一能做的就是重新发明轮子:从头开始实现你的FFT函数(这是一项大量的工作)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1729581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档