打印

GD32F303之小波变换

[复制链接]
584|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、信号输入
arm_sin_f32(2*3.1415926*50*i/1000)+arm_sin_f32(2*3.1415926*250*i/1000);

二、结果






三、测试函数
void dwdt_test(void)
{
        static float32_t data[512];//输入信号
    static float32_t temp[512];//中间结果
    static float32_t data_output[512];//一维小波变换后的结果
    u32 n = 512;//输入信号长度
    u32 m = 6;//Daubechies正交小波基长度
    u32 i = 0;

    static float32_t h[] = {.332670552950, .806891509311, .459877502118, -.135011020010,
                    -.085441273882, .035226291882};
    static float32_t g[] = {.035226291882, .085441273882, -.135011020010, -.459877502118,
                    .806891509311, -.332670552950};
       
        for(i=0;i<512;i++)
        {
                data[i]=arm_sin_f32(2*3.1415926*50*i/1000)+arm_sin_f32(2*3.1415926*250*i/1000);
        }
        DWT1D(data, data_output, temp, h, g, n, m);
        for(i = 0; i < n; i++)
    {
        printf("%f\r\n", data_output[i]);
        
    }
       
}


四、主函数

/*
    昆明电器科学研究所 张恩寿 2019年5月3日
       
       
*/
#include "bitband.h"
#include "led_config.h"
#include "systick.h"
#include "usart.h"
#include "spi_flash.h"
#include "tft.h"
#include "key_lookup.h"
#include "dsp_dwdt.h"




int main(void)
{                       
        systick_config(120);
        nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);
        usart0_init(115200);
    led_init();
        dwdt_test();
        
        while(1)
        {
                led_on();
                delay_nms(600);
                led_off();
                delay_nms(600);
        }
               
}




五、总结分析
总体上来说,基本可以,,由于小波变换并非arm提供的dsp,自己编写,还存在一定的优化空间

使用特权

评论回复
评论
zeshoufx 2019-9-5 11:04 回复TA
自己先顶一个 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

1948

帖子

14

粉丝