2013-07-01 136 views
2

我想要得到一個寬度爲83.66的方波。看到我正在使用去卷積,我希望它是確切的。以下是我迄今爲止:矩陣函數/方波在MatLab

width = 83.66; 
x = linspace(-400,400,10000); 

     a2 = 1.205e+004 ; 
     al = 1.778e+005 ; 
     b1 =  94.88 ; 
     c1 =  224.3 ; 
     d =  4.077 ; 

measured = al*exp(-((abs((x-b1)./c1).^d)))+a2; 

p = 33*sinc((x)/(2*width)); 
slit = abs(fftshift(ifft(p))); 

我有一個測量適合我的數據,並希望與我的寬度83.66縫隙卷積它。我試圖建立這個傅里葉變換,然後使用ifft(),但這只是給我一個delta函數。它可能是頂部有小波紋的高峯,但當我放大時我不會看到它。另外,我的狹縫寬度應該是〜84。

關於如何獲得狹縫的準確表示的任何想法。我的另一個想法是一些諸如:

slit = zeros(length(x)) 

slit(1:1+width) = 1 
+0

好的,這是[在Matlab中執行卷積]的延續/複本(http:// stackove rflow.com/questions/17370975/performing-a-convolution-in-matlab),對吧?狹縫處於時域還是頻域?什麼是狹縫的幅度,1? – macduff

+0

是的,這是一個延續。狹縫處於時間域。狹縫的幅度確實是一個 – yankeefan11

回答

3

所以,我會用rect函數來設置一個縫隙,就像這樣:

x = linspace(-400,400,10000); 
width = 83.66; 
% create a rect function 
rect = @(x) 0.5*(sign(x+0.5) - sign(x-0.5)); 
% create the time domain slit function 
rt = rect(x/83.66); 
plot(x, rt); 

rect

% change it to a causal rect 
x0 = width/2 + 20; % move the left edge to be 20 units to the right of the origin 
plot(x, rect((x-x0)/width)) 

shift rect

+0

美麗。正是我所需要的。 – yankeefan11

+0

@JamesMaslek,很高興聽到它!你的問題聽起來很有趣,如果你有更多麻煩,我很樂意聽到更多關於它的信息! – macduff

+0

謝謝!其實我還有另外一個問題。我會很快發佈在論壇上。 – yankeefan11