查看: 134|回复: 0|关注: 0

[未答复] 最近在用matlab比较Walsh变换和快速Walsh变换的运算时间,但是matlab自带的fwht比正常算的Walsh变换还要慢。。。这是为什么呢,

[复制链接]

新手

5 麦片

财富积分


050


1

主题

1

帖子

0

最佳答案
发表于 2020-2-13 18:44:03 | 显示全部楼层 |阅读模式
function y = fwht1(x,N)
for i = 1:2:N-1
    x(i,:) = x(i,:) + x(i+1,:);
    x(i+1,:) = x(i,:) - 2 * x(i+1,:);
end
L = 1;
y = zeros(size(x),class(x));
for nStage = 2:log2(N) % log2(N) = number of stages in the flow diagram
    % calculate coefficients for the ith stage specified by nStage
    M = 2^L;
    J = 0; K = 1;
    while (K < N)
        for j = J+1:2:J+M-1
                y(K,:) = x(j,:) + x(j+M,:);
                y(K+1,:) = x(j,:) - x(j+M,:);
                y(K+2,:) = x(j+1,:) - x(j+1+M,:);
                y(K+3,:) = x(j+1,:) + x(j+1+M,:);
            K = K + 4;
        end
        J = J + 2*M;
    end
    % store coefficients in x at the end of each stage
    x = y;
    L = L + 1;
end
% perform scaling of coefficients
y = x ./ N;


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表