自身代码循环形式转向矢量形式

1视图(最后30天)
斯大林GarcíaRuano
斯大林GarcíaRuano 2021年8月15日
hello,我有自己的代码获取fft矢量x输入时域信号,fft返回我,此函数使用环路,我需要相同的函数,但没有环路,即转换矢量或矩阵循环迭代器。我以各种方式尝试过,但我没有成功人能帮助我
代码如下:
ft代码取自raix2法
函数显示yss
N1=长度%计算Xn序列大小
NFFT=2QSeil(log2N1);%计算样本数补全
x=x0s(1nFFT-N1)序列完成0-nFFT元素
N=长度(x);%计算xn样本数
b=bin2dec(fliplr(dec2bin (0:1:nFFT-1)))+1;百分比重排序样本
x=xxb信号重排序
S=log2N%计算阶段数
半=1;%初始化半值
For级=1:S%循环算法Log2
Forindex=0:(2^stage):(N-1)蝴蝶算法的每一阶段
ForN=0:(Half-1)蝴蝶计算并保存结果
spos=n+index+1%样本索引
pow=(2^(S-stage))*n;%复杂乘法功率
w=exp((-1i)*(2*pi)*pow/N);%复杂乘法
a=x(pos)+x(pos+Half).*w;首端蝴蝶
b=x(pos)-x(pos+Half).*w;二分
x(sp)=a%保存前端蝴蝶结果
x(sp+Half)=b% 保存蝴蝶第二部分结果
结束
结束
半=2*半%计算下个'半'值
结束
Y=x;函数结果保存
结束
并测试
CLC关闭全部清除全部
签名搭建
信号持续时间
持续时间=1
优先频率组件
f1=10
百分比第二频分量
f2=20
采样频率
fs=10*f2
采样周期百分比
ss=1/Fs
向量时间
t=0:Ts:持续时间
信号构建
原创信号无(10)+无(20)
sin2*pi*f2
N1=长度(xn);%
自由QUENCYDOMAY
信号样本数
N=长度
计算值最接近乘法2乘法
百分数增加样本数并产生更好结果
NFFT=2+++++
Xn2= my_fft-vecti
i应用matlabFT函数
Xn1= my_fft_for
%综合模块称serveOGRAM计算
周期图=abs
计算频率AXIS:与ServiceOGRAM相同点数,介于0和Fs间
f=linspace(0,Fs,NFFT);
由两轴准备, 我们只是图解
绘图图(f,周期图);
因中段对称,我们只对半PERIDODOGRAM视觉化感兴趣
轴数([0Fs/2最大0
xlabelF(Hz))
标题(PERIODOGRAM基础)
注释 :
i需要从循环表变向量表相似
DFT循环表单
DFT转换为向量表
求求帮助

接受回答

萨勒曼·艾哈迈德
萨勒曼·艾哈迈德 2021年8月30日
斯大林
估计你需要向量化代码中所有循环可指一种可能的转接法 减少二环入代码很难不重写逻辑即压缩第三方循环 索引化 宝斯 变量大小迭代希望它帮助
函数显示yss
N1=长度%计算Xn序列大小
NFFT=2QSeil(log2N1);%计算样本数补全
x=x0s(1nFFT-N1)序列完成0-nFFT元素
N=长度(x);%计算xn样本数
b=bin2dec(fliplr(dec2bin (0:1:nFFT-1)))+1;百分比重排序样本
x=xxb信号重排序
S=log2N%计算阶段数
半=1;
For级=1:S%循环算法Log2
index=0:(2^stage):(N-1);蝴蝶算法的每一阶段
N=0:(Half-1);蝴蝶计算并保存结果
spos=n+index+1%样本索引
pow=(2^(S-stage)).*n;%复杂乘法功率
w=exp((-1i)*(2*pi).*pow/N);%复杂乘法
a=x(pos)+x(pos+Half).*w;首端蝴蝶
b=x(pos)-x(pos+Half).*w;二分
x(sp)=a%保存前端蝴蝶结果
x(sp+Half)=b% 保存蝴蝶第二部分结果
半=2*半
结束%计算下个'半'值
Y=x;
函数结果保存
结束
1注释
斯大林GarcíaRuano
斯大林GarcíaRuano 2021年8月31日
谢天谢地 代码完美

签名评语

更多回答(0)

类别分类

查找更多上 傅里叶分析过滤帮助中心文件交换

下载188bet金宝搏


发布

R2020a

社区宝搜捕

寻找MATLAB中心宝库并发现社区如何帮助你

开始打猎