下面是matlab的**(使用函式進行了封裝):
function [ ret_val ] = fft1024( vector )
%untitled8 此處顯示有關此函式的摘要
% 此處顯示詳細說明
%untitled7 此處顯示有關此函式的摘要
% 此處顯示詳細說明
%***********************************===
%ret_val 為fft變換後返回的頻域序列
%n 為點數
%vector 為變換前的序列
%***********************************===
vector_size = size(vector);
n = vector_size(2);
c = zeros(1,n);
%%變址運算
%j1 = 0;
for i = 1 : n
if i < j1 + 1
tmp = vector(j1 + 1);
vector(j1 + 1) = vector(i);
vector(i) =tmp;
endk = n / 2;
while k <= j1
j1 = j1 - k;
k = k / 2;
endj1 = j1 + k;
end%
%蝶形運算
%%%%%%%%計算 n 的
dig = 0;
k = n;
while k > 1
dig = dig + 1;
k = k / 2;
end%%%%%%
% m 為級; dist 為蝶形運兩點的距離; n 為蝶形運算組數
%n = n / 2;
for m = 1 : dig
dist = 2 ^ (m - 1);
idx = 1;
for i = 1 : n
idx1 = idx;
for j1 = 1 : n / (2 * n)
r = (idx - 1) * 2 ^ (dig - m);
coef = exp(j * (-2 * pi * r / n));
tmp = vector(idx);
vector(idx) = tmp + vector(idx + dist) * coef;
vector(idx + dist) = tmp - vector(idx + dist) * coef;
idx = idx + 1;
endidx = idx1 + 2 * dist;
endn = n / 2;
endret_val = vector;
end
測試**:
clc;
clear;
ad_fre = 1023 %修改取樣頻率和取樣點數,取樣時間沒有修改,通過修改改值可以觀察週期擷取對訊號頻譜的影響
adc=2; %直流分量幅度
a1=3; %頻率f1訊號的幅度
a2=1.5; %頻率f2訊號的幅度
f1=50; %訊號1頻率(hz)
f2=75; %訊號2頻率(hz)
fs=ad_fre; %取樣頻率(hz)
p1=0; %訊號1相位(度)
p2=0; %訊號相位(度)
n=ad_fre; %取樣點數
t=[0:1/fs:n/fs]; %取樣時刻
%訊號vector=adc+a1*cos(2*pi*f1*t+pi*p1/180)+a2*cos(2*pi*f2*t+pi*p2/180);
%顯示原始訊號
figure(1)
plot(vector);
title('原始訊號');
y = fft1024(vector); %做fft變換
ayy = (abs(y)); %取模
ayy=ayy/(n/2); %換算成實際的幅度
ayy(1)=ayy(1)/2;
f=([1:n]-1)*fs/n; %換算成實際的頻率值,fn=(n-1)*fs/n
figure(2)
stem(f(1:n/2),ayy(1:n/2)); %顯示換算後的fft模值結果
title('幅度-頻率曲線圖');
% % pyy=[1:n/2];
% for i=1:n/2
% pyy(i)=angle(y(i)); %計算相位
% pyy(i)=pyy(i)*180/pi; %換算為角度
% end;
% subplot(414);stem(f(1:n/2),pyy(1:n/2)); %顯示相位圖
% title('相位-頻率曲線圖');
自己製作Chrome便攜版實現多版本共存
本文只針對windows下的chrome瀏覽器的使用。有時候我們需要使用老版本chrome,或者僅僅體驗一下最新版。上古時代有ietester用來測試多個ie版本,和本機的ie不衝突。chrome別人也製作了很多便攜版,但不知道有沒有加料。利用googlechromeportable.exe啟動器來...
檢視自己的ubuntu 的版本
一 檢視自己的ubuntu 的版本 方法1 在終端中執行下列指令 cat etc issue 可以檢視當前正在執行的 ubuntu 的版本號。其輸出結果類似下面的內容 ubuntu 12.04 lts n l 方法2 使用 lsb release 命令也可以檢視 ubuntu 的版本號,與方法一相比...
自己實現printf
原理不是很難網上有很多,自己搜一下就明白了。void printlog const char fmt,看到上面 太簡單了,也許有人會說,這有什麼用?在我看來最大的用處在於寫日誌,如果我們把 稍稍改下就可以把螢幕上的輸出一起輸出到檔案乙份 在初始化處把全域性變數日誌檔案開啟就像這樣 plogfile ...