matlab問題,matlab相關問題

2022-09-22 07:00:03 字數 5292 閱讀 1400

1樓:朝華念雙

感覺n=1000這個數值有問題,這樣的話x的值太大了。程式如下:

x='10*exp(-1000*t)*sin(2*t+pi/2)';

ezplot(x)

不過影象很怪。

我把n改為1後即n=1時的影象如下:

希望能解決您的問題。

2樓:手上青春飛翔

4.3 兩個訊號相加的生成函式sigadd.m[y,n]=sigadd(x1,n1,x2,n2)4.

4 兩個訊號相乘的生成函式sigmult.m[y,n]=sigmult(x1,n1,x2,n2)4.5 序列移位y(n)=x(n-n0)的生成函式sigshift.

m[y,n]=sigshift(x,m,n0)你的sigadd函式用法錯誤,只有四個引數(x1,n1,x2,n2)

關於matlab的問題

3樓:匿名使用者

一、快速傅利葉介紹

傅利葉原理表明:任何連續測量的時序或訊號,都可以表示為不同頻率的余弦(或正弦)波訊號的無限疊加。fft是離散傅利葉變換的快速演算法,可以將乙個訊號變換到頻域。

那其在實際應用中,有哪些用途呢?

1.有些訊號在時域上是很難看出什麼特徵的,但是如果變換到頻域之後,就很容易看出特徵(頻率,幅值,初相位);

2.fft可以將乙個訊號的頻譜提取出來,進行頻譜分析,為後續濾波準備;

3.通過對乙個系統的輸入訊號和輸出訊號進行快速傅利葉變換後,兩者進行對比,對系統可以有乙個初步認識。

假設取樣頻率fs,訊號頻率f,訊號長度l,取樣點數n。那麼fft之後結果就是乙個為n點的複數。每乙個點就對應著乙個頻率點。這個點的模值,就是該頻率值下的幅度特性。

具體跟原始訊號的幅度有什麼關係呢?

1. 假設原始訊號的峰值為a,那麼fft的結果的每個點(除了第乙個點直流分量之外)的模值就是a的n/2倍,而第乙個點就是直流分量(即0hz),它的模值是直流分量的n倍;

2. 每個點的相位呢,就是在該頻率下的訊號的相位。第乙個點表示直流分量,它的相位是該頻率的初相位,matlab以cos為底的,若訊號時正弦形式sin(t),則變成cos(t-pi/2)即可。

取樣頻率fs,被n-1個點平均分成n等份,每個點的頻率依次增加。為了方便進行fft運算,通常n取大於訊號長度l的2的整數次方。

例如某點n所表示的頻率為:fn=(n-1)*fs/n。由上面的公式可以看出,fn所能分辨到頻率為為fs/n。

如果取樣頻率fs為1024hz,取樣點數為1024點,則可以分辨到1hz。

1024hz的取樣率取樣1024點,剛好是1秒,也就是說,取樣1秒時間的訊號並做fft,則結果可以分析到1hz。如果取樣2秒時間的訊號,則n為2048,並做fft,則結果可以分析到0.5hz。

如果要提高頻率分辨力,則必須增加取樣點數,也即取樣時間。頻率解析度和取樣時間是倒數關係。

假設fft之後某點n用複數a+bi表示,該複數的模就是an=sqrt(a*a+b*b),相位就是pn=atan2(b,a)。根據以上的結果,就可以計算出n點(n≠1,且n<=n/2)對應的訊號的表示式為:an/(n/2)*cos(2*pi*fn*t+pn),即2*an/n*cos(2*pi*fn*t+pn);對於n=1點的訊號,是直流分量,幅度即為a1/n。

由於fft結果的對稱性,通常我們只使用前半部分的結果,即小於取樣頻率一半的結果。

二、例子

假設我們有乙個訊號,它含有5v的直流分量,頻率為50hz、相位為-30度、幅度為7v的交流訊號以及乙個頻率為90hz、相位為90度、幅度為3v的交流訊號。數學表示式為:

x = 5 + 7*cos(2*pi*15*t - 30*pi/180) + 3*cos(2*pi*40*t - 90*pi/180)。

我們以128hz的取樣率對這個訊號進行取樣,總共取樣256點。按照我們上面的分析,fn=(n-1)*fs/n,我們可以知道,每兩個點之間的間距就是0.5hz。

我們的訊號有3個頻率:0hz、15hz、40hz

出於程式設計方便,因為直流分量的幅值a1/n,其他點幅值為an/(n/2),故直流分量最後要除以2才是對的。

一般fft所用資料點數n與原含有訊號資料點數l相同,這樣的頻譜圖具有較高的質量,可減小因補零或截斷而產生的影響。

三、matlab**

fs = 128; % 取樣頻率

t = 1/fs; % 取樣時間

l = 256; % 訊號長度

t = (0:l-1)*t; % 時間

x = 5 + 7*cos(2*pi*15*t - 30*pi/180) + 3*cos(2*pi*40*t - 90*pi/180); %cos為底原始訊號

y = x + randn(size(t)); %新增雜訊

figure;

plot(t,y)

title('加雜訊的訊號')

xlabel('時間(s)')

快速傅利葉變換之matlab

n = 2^nextpow2(l); %取樣點數,取樣點數越大,分辨的頻率越精確,n>=l,超出的部分訊號補為0

y = fft(y,n)/n*2; %除以n乘以2才是真實幅值,n越大,幅值精度越高

f = fs/n*(0:1:n-1); %頻率

a = abs(y); %幅值

p = angle(y); %相值

figure;

subplot(211);plot(f(1:n/2),a(1:n/2)); %函式fft返回值的資料結構具有對稱性,因此我們只取前一半

title('幅值頻譜')

xlabel('頻率(hz)')

ylabel('幅值')

subplot(212);plot(f(1:n/2),p(1:n/2));

title('相位譜頻')

xlabel('頻率(hz)')

ylabel('相位')

快速傅利葉變換之matlab

原始訊號中x = 5 + 7*cos(2*pi*15*t - 30*pi/180) + 3*cos(2*pi*40*t - 90*pi/180);

可以看到,幅值頻譜中15hz(與數學表示式中的15hz對應),幅值7.063(與7對應),相位頻譜中初相位-0.5072(與-30*pi/180對應)

幅值頻譜中40hz(與數學表示式中的40hz對應),幅值3.082(與3對應),相位頻譜中初相位-1.57(與-90*pi/180對應)

下面驗證matlab中快速傅利葉變換是以cos為底的。

1.原始訊號換為:x = 5 + 7*sin(2*pi*15*t - 30*pi/180) + 3*sin(2*pi*40*t - 90*pi/180); %sin為底的原始訊號

快速傅利葉變換之matlab

幅值頻譜明顯對應正確,只需驗證相位頻譜。由於sin(t + p1)=cos(t + p1 - pi/2),故

-30*pi/180 - pi/2 = -2.0944,這與相位頻譜中-2.093對應

-90*pi/180 - pi/2 = -3.1416,這與相位頻譜中-3.057對應

若想提高結果的精度,可以提高訊號長度l和取樣點數n。

2.原始訊號若為x = 5 + 7*cos(2*pi*15*t - 30*pi/180) + 3*sin(2*pi*40*t - 90*pi/180); %sin和cos為底的原始訊號

同樣驗證正確。

matlab問題

4樓:

num=[1];

原始開環傳遞函式分子多項式

den=[1 6 11 6];

原始開環傳遞函式分母多項式

numcf=[kp];

開環傳遞函式分子放大係數

dencf=[1];

開環傳遞函式分母放大係數

numf=conv(numcf,num);

開環傳遞函式分子多項式

denf=conv(dencf,den);

開環傳遞函式分子多項式

[numc,denc]=cloop(numf,denf);

閉環系統

step(numc,denc);

系統階躍響應

matlab相關問題

5樓:

先設計原型濾波器再變換成iir是很經典的設計思路。早年計算機不發達的時候,電子工程師們都是這麼做的。只不過現在matlab裡提供了一些整合的設計功能,把這些設計步驟整合起來便於使用。

本質上等價,但是matlab自己的函式不清楚到底裡面用的是雙線性法還是衝擊不變法做的。注意衝擊不變法不能設計帶阻或高通濾波器,而雙線性法的線性相位特性不佳。具體的關於數字濾波器設計的經典思路(低通原型->變換),一般dsp教材上都會有,這裡不多說了。

關於三個函式:

freqs是給出s引數系統函式,畫幅頻特性曲線。s引數是模擬系統用的,**是laplace變換。

freqz是給出z引數系統函式,畫幅頻特性曲線。z引數是數字系統用的,**是z變換。

上面兩種引數在訊號與系統的教材中有。

plot是乙個一般的繪圖函式,需要給出函式的自變數和因變數才能畫。不知道你是用什麼方法得到要畫的圖的。抑或你實際呼叫了某個類的成員函式。

請給出你plot裡面怎麼寫的,相應變數是怎麼得到的。

matlab如何解決實際問題

6樓:匿名使用者

matlab功能異常強大,不僅工具箱種類齊全,並且裡面的**都有優化過,最後的結果比你自己用vc好得多;

另外就是matlab很好用,可以說相當容易上手,檢查錯誤也容易。

至於處理的問題非常多啊,影象處理,數值分析,神經網路,simulink...很實用的一款軟體。

我主要是做影象處理和數值分析相關的一些工作,所有的問題matlab都能處理。

7樓:匿名使用者

這要看你的情況 指的是具體應用還是什麼

比如最簡單的問題啊 數學問題 就可以實際解決了

matalb功能的強大 不是一般的強大的

關於matlab的問題

8樓:匿名使用者

matlab中只能附加有正態密度曲線的直方圖使用函式histfit

函式 histfit

格式 histfit(data) %data為向量,返回直方圖和正態曲線。

histfit(data,nbins) % nbins指定bar的個數,預設時為data中資料個數的平方根。

例》r = normrnd (10,1,100,1);

>>histfit(r)

希望能對你有所幫助!

matlab問題,乙個matlab問題

a b是矩陣的關係運算,即對應位元素比較,結果為邏輯矩陣,真為1,假為0,故 a b 0,0 邏輯矩陣可以用來邏輯索引,即在原矩陣中取出對應邏輯矩陣為真的那些位,例如a 1,2,3 4,5,6 7,8,9 c 1,0,0 0,1,0 0,0,1 那麼a c 1 5 9 a a b b a b 本意是...

matlab中函式引數的問題,matlab非線性規劃fmincon函式中目標函式引數傳遞問題,怎麼解?

使用匿名函式控制代碼就可以了 fmincon 需要的函式fun只有乙個輸入引數 fun x 而你的函式需要多乙個能改變的變數 那麼形式變成 myfun p,x p就是你要傳遞的引數,x還是原來的輸入 當然首先,你得寫個m檔案,假設為myfun.m,其內容大致如下 function out myfun...

matlab的全排列問題,matlab中全排列的問題

哈哈,我用的是 遞增進製數法 方法源自網上 如下 以下計算出新的排列 author by wacs5 排列的總個數為n 在指定位置插入 即可 clc clear n 3 n 1 prod 1 n allorder k zeros 1,n 1 ticfor allorder m 1 n 1 產生n 個...