久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

電子信息MATLAB系統仿真與設計

時間:2019-05-12 12:57:10下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《電子信息MATLAB系統仿真與設計》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《電子信息MATLAB系統仿真與設計》。

第一篇:電子信息MATLAB系統仿真與設計

電子信息系統仿真與設計

課程設計報告

設計課題: 油價變化系統的模型 姓 名:

學 院: 機電與信息工程學院

專 業: 電子信息科學與技術

班 級: 09級 2班

學 號: 日 期 2010-2011第三學期

指導教師: 李光明 張軍蕊

山東大學威海分校信息工程學院 建模:

1背景

設某一星期的油價為p,其中n表示年份,它與上一星期的油價、油價升值速率以及新增資源所能滿足的個體數目之間的動力學方程由如下的差分方程所描述:

從此差分方程中可以看出,此油價變化系統為一非線性離散系統。如果設油價初始值、油價升值速率、新增資源所能滿足的個體數目,要求建立此油價動態變化系統的系統模型,并分析油價在未來100個星期內之間的變化趨勢。2 建立油價變化系統的模型

(1)Discrete模塊庫Unit Delay模塊:其主要功能是將輸入信號延遲一個采樣時間,它是離散系統的差分方程描述以及離散系統仿真的基礎。在仿真時只要設置延遲模塊的初始值便可計算系統輸出。

(2)Discrete模塊庫Zero-Order Hold模塊:其主要功能是對信號進行零階保持。使用Simulink對離散系統進行仿真時,單位延遲是Discrete模塊庫中的Unit Delay模塊來完成的。對于油價變化系統模型而言,需要將作為Unit Delay模塊的輸入以得到,然后按照系統的差分方程來建立人口變化系統的模型。

1.05ProductGainScope1zUnit DelayGain1-K-1Constant 系統參數設置

系統模型建立之后,首先需要按照系統的要求設置各個模塊的參數,如下所述:(1)增益模塊Gain表示油價升值速率,故取值為1.05。

(2)模塊Gain1表示新增資源所能滿足的個體數目,故取值為1000000。(3)油價初始值設為10$/L(4)Unit Delay模塊參數設置。

(5)仿真時間設置:按照系統仿真的要求,設置系統仿真時間范圍為0~100。(6)離散求解器與仿真步長設置:對離散系統進行仿真需要使用離散求解器。

實驗總結及心得體會 MATLAB是一件很強大的工具,在模擬仿真方面有著不可比擬的優勢。不僅可以通過語言腳本可以幫助我們解決很多問題,而且simulink也是十分強大的。通過十分直觀的方式直接按放各模塊,很明顯地顯示出各種邏輯關系,方便快捷,思路清晰。在實際應用中。Simulink起到了重要作用。通過對simulink的學習,我發現我們所學的課本知識是很重要的,只要通過理解變通,就很容易解決實際問題。但是,有個前提就是你要有著扎實的理論知識。所以,我們千萬不能忽略了課本知識的重要性,不要浮躁,理解透徹。Simulink對我來說是很陌生的一個東西,通過幾天的摸索,我漸漸摸到了他的奇妙之處,其實不如我們想象那么難,只要沒仔細分析好,它會是我們工作學習的一個強力助手。當然,由于時間短暫,我還需要更多時間的學習,才能徹底掌握這個仿真軟件。

附錄

1.利用simulink仿真來實現攝氏溫度到華氏溫度的轉換 Tf?9Tc?32 5

?y??x?y2.設系統微分方程為?,試建立系統模型并仿真

y(1)?2?

3.利用simulink仿真x(t)?

11(cos?t?cos3?t?cos5?t),取A=1, ??2? 2925?8A

-K-ClockGain3cosTrigonometricFunctioncosTrigonometricFunction21/9GainSum ofElements-K-Gain1-K-Gain2Scope-K-Clock1Gain4-K-Clock2Gain5cosTrigonometricFunction1

4.建立如圖1所示的仿真模型并進行仿真,改變增益,觀察x-y圖形變化,并用浮動的scope模塊觀測各點波形。

1sSine WaveIntegratorXY Graph1SliderGainFloatingScope 圖1.題目4

改變增益:

繼續增大增益:

5. 有初始狀態為0的二階微分方程x???0.5x??0.4x?2u(t)其中u(t)是單位階躍函數,試建立系統模型并仿真。

6. 通過構造SIMULINK模型求y?cos(t)dt的結果,其中初值分別為y1(0)=0, y2(0)=1

?

當y1(0)=0時:

當 y1(0)=1時:

7.分析二階動態電路的零輸入響應

圖2為典型的二階動態電路,其零輸入響應有過阻尼、臨界阻尼和欠阻尼三種情況,已知L=0.5H, C=0.02F, R=1, 2, 3, …, 13?, 初始值uc(0)?1V,iL(0)?0求uc(t)和iL(t)的零輸入響應并畫出波形。(1用simulink的方法,2用腳本文件的方法)

LRC 圖2 題目5 二階動態電路

(1)用simulink的方法

1sIntegrator50Gain21sIntegrator1Scope-u-K-Gain3AddUnary Minus2Gain1Scope1

(2)用腳本文件的方法 定義函數文件funcforex123.m

function xdot=funcforex123(t,x,flag,R,L,C)xdot=zeros(2,1);

xdot(1)=-R/L*x(1)-1/L*x(2)+1/L*f(t);xdot(2)=1/C*x(1);function in=f(t)in=0;腳本文件:

L=0.5;C=0.02;

for R=[1 2 3 4 5 6 7 8 9 10 11 12 13]

[t,x]=ode45('funcforex123',[0 7],[0;1],[],R,L,C);figure(1);plot(t,x(:,1));hold on;

xlabel('timesec');

text(0.9,0.07,'leftarrowi-L(t)');grid;figure(2);plot(t,x(:,2));hold on;

xlabel('timesec');

text(0.5,0.3,'leftarrowu-C(t)');grid;end

電壓圖:

10.80.60.4leftarrowu-C(t)0.20-0.2-0.4-0.6-0.801234timesec567

電流圖:

0.150.1leftarrowi-L(t)0.050-0.05-0.1-0.15-0.201323timesec345673

8.一池中有水2000m,含鹽 2 kg,以 6m/ 分 的速率向池中注入濃度為 0.5 kg / m 的3m鹽水,又以 4 / 分的速率從池中流出混合后的鹽水,問欲使池中鹽水濃度達到 0.2 kg / m3,需要多長時間?(1用simlink的方法,2用腳本文件的方法)【附加:試畫出濃度vs時間的曲線】

2Constant3ClockGain1-K-Gain2Gain34Gain2ProductAdd1sIntegratorScope

9.任意選擇一個待仿真的實際問題,建立模型并分析仿真結果,或者MATLAB Simulink demo里面一個模塊進行分析

10.利用Simulink畫出以下微分方程組的框圖:

dx/dt=-x^2+y,dy/dt=-x-x*y;x(0)=0,y(0)=0 運行結果要求傳到工作空間中,并畫出相位圖(橫坐標為x,縱坐標為y)。

11.搭建特定的信號源,建立SIMULINK仿真模型、顯示仿真結果。

ClockProduct>=Clock1RelationalOperator0ConstantSwitch

第二篇:《MATLAB及系統仿真》2010年課程簡介

課程編號:216317

課程名稱:MATLAB及系統仿真

學分:2學分

總 學 時:32學時其中授課學時:20學時上機學時:12學時

先修課程:C語言、線性代數、信號與系統、通信原理

開課部門:計算機與通信學院

課程內容:

本課程要求學生掌握:MATLAB基本語句結構,矩陣的基本運算,控制語句,M文件和M函數的編寫與調用,繪圖功能,數學函數庫的調用,SIMULINK仿真。通過本課程的學習,學生應能夠在MATLAB環境下解決常見的數學問題和工程問題,并且能利用MATLAB軟件對通信系統里的各種調制和解調過程進行仿真分析。

選課對象:通信工程,計算機科學與技術、電子信息技術

第三篇:Matlab與Simulink系統仿真學習心得 馬楠

Matlab與Simulink系統仿真學習心得

班級:07610

學號:072019

姓名:馬楠

第一部分:Matlab學習心得以及實踐

Matlab是迄今為止我所見到過的功能最為強大實用范圍寬廣的軟件。的確Matlab適用于教學,航天,網絡仿真等等。而且提供了很多功能強大的工具箱,并且最為突出的是它自帶的很全面細致的幫助文檔,無論你是初學者還是老手都會驚嘆于此,你也不必去花很多時間去熟悉那些繁雜的命令,并且很容易通過這些幫助文檔得到關于這些函數最精準的用法。

Matlab是一個建立在矩陣操作上的軟件,我想要想真正懂得并理解Matlab與一般的語言比如C或者java的區別,那么你就應該真正理解矩陣的思想。而且要熟悉Matlab對矩陣存儲的方式(在下文中我會詳細解釋與之相關的內容),這樣對提高你的代碼執行效率與易懂性都有很大的幫助。

但是Matlab究竟應該怎么定位呢?一個編程軟件,一個數學工具,一個工具箱,一個開發引擎,一個仿真工具,一個虛擬現實軟件…… 的確要精準的說出Matlab的作用很難,或許去定義這個東西到底是用來干什么的并不重要,It is just a tool。

關于Matlab的學習方法,我想與別的語言有很大不同,對于匯編或者C,我們應當很注重底層的一些操作,比如棧或者隊列存儲數據的方式,int或者double類型轉換的時候產生的數據丟失,或者指針方面很頭疼的一些東西,但是對于Matlab你根本不必去注重這些東西,也不必去清除的記得那個函數的具體調用方式,那個函數的內容與結構等等。你需要的只是相當用一個筆記本寫下你一步一步實現目標的步驟而已。一種草稿紙式的語言。你所學的東西很大部分都是為你要做的目標來服務的,也許這就是當初面向對象式語言產生的原因,但是Matlab就是這種語言的一個代表。

好了,就說到這里了,接下來是我自己學習中對Matlab的一些應用中所遇到的問題以及思考方式和解決辦法。離散信號卷積:

N1=input('N1=');%輸入N1 N2=input('N2=');%輸入N2 k1=0:(N1-1);%定義序列f1的對應序號向量 k2=0:(N2-1);% 序列f2的對應序號向量 f1=ones(1,N1);%f1為階躍序列 f2=0.5*k2;%f2為斜坡序列

[f,k]=dconv(f1,f2,k1,k2)%求離散卷積

其中dconv函數的代碼為:

function [f,k]=dconv(f1,f2,k1,k2)

%The function of compute f=f1*f2 % f: 卷積和序列f(k)對應的非零樣值向量 % k:

序列f(k)的對應序號向量 % f1: 序列f1(k)非零樣值向量 % f2: 序列f2(k)的非零樣值向量 % k1: 序列f1(k)的對應序號向量 % k2: 序列f2(k)的對應序號向量 f=conv(f1,f2)

%計算序列f1與f2的卷積和f k0=k1(1)+k2(1);

%計算序列f非零樣值的起點位置 k3=length(f1)+length(f2)-2;

%計算卷積和f的非零樣值的寬度

k=k0:k0+k3

%確定卷積和f非零樣值的序號向量 subplot(2,2,1)stem(k1,f1)title('f1(k)')xlabel('k')ylabel('f1(k)')subplot(2,2,2)

%在子圖1繪序列f1(k)時域波形圖

stem(k2,f2)

%在圖2繪序列f2(k)時波形圖 title('f2(k)')xlabel('k')ylabel('f2(k)')subplot(2,2,3)stem(k,f);

%在子圖3繪序列f(k)的波形圖 title('f(k)f1(k)與f2(k)的卷積和f(k)')xlabel('k')ylabel('f(k)')h=get(gca,'position');

h(3)=2.5*h(3);set(gca,'position',h)%將第三個子圖的橫坐標范圍擴為原來的2.5倍一次物理實驗中的數據處理,關于非線性電阻。

x=[12.042 11.844 11.644 11.444 11.244 11.043 10.843 10.645 10.447 10.240 10.054 9.843 9.640 9.447 8.950 8.448 7.946 7.441 6.940 6.444 5.942 5.446 4.946 4.445 3.944 3.447 2.942 2.442 2.246 2.045 1.846 1.643 1.464 1.252 1.038 0.849 0.642 0.448 0.208 0 ];y=[0.601 0.915 1.349 1.742 2.152 2.572 2.994 3.414 3.840 4.285 4.678 4.612 4.526 4.447 4.246 4.043 3.846 3.635 3.433 3.232 3.028 2.827 2.625 2.442 2.220 2.018 1.814 1.614 1.535 1.455 1.376 1.235 1.101 0.950 0.791 0.642 0.491 0.341 0.158 0.001]

p1=polyfit(x(1:11),y(1:11),1);p2=polyfit(x(11:31),y(11:31),1);p3=polyfit(x(31:end),y(31:end),1);Y1=vpa(poly2sym(p1,'x'),6)Y2=vpa(poly2sym(p2,'x'),6)Y3=vpa(poly2sym(p3,'x'),6)

x1=min(x(1:11)):0.1:max(x(1:11));x2=min(x(11:31)):0.1:max(x(11:31));x3=min(x(31:end)):0.1:max(x(31:end));y1=polyval(p1,x1);y2=polyval(p2,x2);y3=polyval(p3,x3);

plot(x,y,'o',x1,y1,x2,y2,x3,y3);xlabel('電壓值U/v');ylabel('電流值I/mA');title('非線性電阻伏安特性曲線');grid on 54.543.532.521.510.5002468101214

3:三維立體圖形燈光效果 [x,y]=meshgrid(-8:0.5:8);R=sqrt(x.^2+y.^2)+eps;z=sin(R)./R;surf(x,y,z,'FaceColor','interp','EdgeColor','none','FaceLighting','phong');axis tight;daspect([5 5 1]);camlight left view(-50,30)

10.80.60.40.204-0.2-8-6-4-202468-8-6-4-20268

4:地形模擬:

A=[ 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 20 0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.4 0.3 0.2 0.3 0.2 0.1 0.2 0.2 0.4 0.3 0.2 0.2 0.2 0.2 19 0.3 0.2 0.2 0.2 0.2 0.4 0.3 0.3 0.3 0.3 0.4 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.3 0.2 0.2 18 0.2 0.3 0.3 0.2 0.3 1 0.4 0.5 0.3 0.3 0.3 0.3 0.2 0.2 0.2 0.6 0.5 0.4 0.4 0.2 0.2 17 0.2 0.2 0.4 0.2 1 1.1 0.9 0.4 0.3 0.3 0.5 0.3 0.2 0.2 0.2 0.7 0.3 0.6 0.6 0.3 0.4 16 0.2 0.2 0.9 0.7 1 1 1 0.7 0.5 0.3 0.2 0.2 0.2 0.6 0.2 0.8 0.7 0.9 0.5 0.5 0.4 15 0.2 0.3 1 1 1 1.2 1 1.1 0.8 0.3 0.2 0.2 0.2 0.5 0.3 0.6 0.6 0.8 0.7 0.6 0.5 14 0.2 0.4 1 1 1.1 1.1 1.1 1.1 0.6 0.3 0.4 0.4 0.2 0.7 0.5 0.9 0.7 0.4 0.9 0.8 0.3 13 0.2 0.2 0.9 1.1 1.2 1.2 1.1 1.1 0.6 0.3 0.5 0.3 0.2 0.4 0.3 0.7 1 0.7 1.2 0.8 0.4 12 0.2 0.3 0.4 0.9 1.1 1 1.1 1.1 0.7 0.4 0.4 0.4 0.3 0.5 0.5 0.8 1.1 0.8 1.1 0.9 0.3 11 0.3 0.3 0.5 1.2 1.2 1.1 1 1.2 0.9 0.5 0.6 0.4 0.6 0.6 0.3 0.6 1.2 0.8 1 0.8 0.5 10 0.3 0.5 0.9 1.1 1.1 1 1.2 1 0.8 0.7 0.5 0.6 0.4 0.5 0.4 1 1.3 0.9 0.9 1 0.8 9 0.3 0.5 0.6 1.1 1.2 1 1 1.1 0.9 0.4 0.4 0.5 0.5 0.8 0.6 0.9 1 0.5 0.8 0.8 0.9 8 0.4 0.5 0.4 1 1.1 1.2 1 0.9 0.7 0.5 0.6 0.3 0.6 0.4 0.6 1 1 0.6 0.9 1 0.7 7 0.3 0.5 0.8 1.1 1.1 1 0.8 0.7 0.7 0.4 0.5 0.4 0.4 0.5 0.4 1.1 1.3 0.7 1 0.7 0.6 6 0.3 0.5 0.9 1.1 1 0.7 0.7 0.4 0.6 0.4 0.4 0.3 0.5 0.5 0.3 0.9 1.2 0.8 1 0.8 0.4 5 0.2 0.3 0.6 0.9 0.8 0.8 0.6 0.3 0.4 0.5 0.4 0.5 0.4 0.2 0.5 0.5 1.3 0.6 1 0.9 0.3 4 0.2 0.3 0.3 0.7 0.6 0.6 0.4 0.2 0.3 0.5 0.8 0.8 0.3 0.2 0.2 0.8 1.3 0.9 0.8 0.8 0.4 3 0.2 0.3 0.3 0.6 0.3 0.4 0.3 0.2 0.2 0.3 0.6 0.4 0.3 0.2 0.4 0.3 0.8 0.6 0.7 0.4 0.4 2 0.2 0.3 0.4 0.4 0.2 0.2 0.2 0.3 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.5 0.7 0.4 0.4 0.3 0.3 1 0.2 0.2 0.3 0.2 0.2 0.3 0.2 0.2 0.2 0.2 0.2 0.1 0.2 0.4 0.3 0.6 0.5 0.3 0.3 0.3 0.2 0 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.7 0.4 0.2 0.4 0.5 0.3];z=A(2:end,2:end)[x,y]=meshgrid(0:20,20:-1:0);surf(x,y,z)xlabel('x')[X,Y]=meshgrid(0:0.3:20,20:-0.3:0);Z=interp2(x,y,z,X,Y,'spline')figure surf(X,Y,Z)1.41.210.80.60.40.2020******161820x

1.41.210.80.60.40.20-0.220******161820

第二部分:Simulink學習心得以及實踐

Simulink是Matlab最重要的組件之一,它提供一個動態系統建模、仿真和綜合分析的集成環境。在該環境中,無需大量書寫程序,而只需要通過簡單直觀的鼠標操作,就可構造出復雜的系統。Simulink具有適應面廣、結構和流程清晰及仿真精細、貼近實際、效率高、靈活等優點,并基于以上優點Simulink已被廣泛應用于控制理論和數字信號處理的復雜仿真和設計。同時有大量的第三方軟件和硬件可應用于或被要求應用于Simulink。

最開始的仿真是沒有圖形化輸入的,所謂模型化圖形輸入是指SIMULINK提供了一些按功能分類的基本的系統模塊,用戶只需要知道這些模塊的輸入輸出及模塊的功能,而不必考察模塊內部是如何實現的,通過對這些基本模塊的調用,再將它們連接起來就可以構成所需要的系統模型(以.mdl文件進行存?。?,進而進行仿真與分析。

現在來想其實要用Simulink去仿真一個系統不是很麻煩,只是實現一些拖拽或者參數設置什么的,但是要真正的去設計完善一個系統的確需要很多知識以及精力。我們必須了解這個系統的每一個步驟以及需要什么樣的組件與之匹配。而且在仿真出現錯誤之后去分析也是很麻煩的一件事情,我們必須有對系統詳細的分析和充分了解以及對Simulink每個組件充分的了解才能真正找到錯誤所在并且修正。所以學好計算機仿真重在理論知識。

接下來是一些自己做的Simulink仿真。

1:階躍信號的積分 仿真圖

仿真結果:

房屋產熱的一個實例

該問題是模擬一個戶外條件下一所房屋能夠產生的熱量的例子

這是仿真結果圖

第四篇:MATLAB與控制系統仿真實驗報告

《MATLAB與控制系統仿真》

實驗報告

2013-2014學年 第 1 學期

專業: 班級: 學號: 姓名:

實驗三 MATLAB圖形系統一、實驗目的:

1.掌握繪制二維圖形的常用函數。2.掌握繪制三維圖形的常用函數。3.熟悉利用圖形對象進行繪圖操作的方法。4.掌握繪制圖形的輔助操作。

二、實驗原理:

1,二維數據曲線圖

(1)繪制單根二維曲線 plot(x,y);(2)繪制多根二維曲線 plot(x,y)當x是向量,y是有一維與x同維的矩陣時,則繪制多根不同顏色的曲線。當x,y是同維矩陣時,則以x,y對應列元素為橫、縱坐標分別繪制曲線,曲線條數等于矩陣的列數。(3)含有多個輸入參數的plot函數 plot(x1,y1,x2,y2,…,xn,yn)(4)具有兩個縱坐標標度的圖形 plotyy(x1,y1,x2,y2)2,圖形標注與坐標控制 1)title(圖形名稱); 2)xlabel(x軸說明)3)ylabel(y軸說明)4)text(x,y圖形說明)5)legend(圖例1,圖例2,…)

6)axis([xmin xmax ymin ymax zmin zmax])3, 圖形窗口的分割 subplot(m,n,p)4,三維曲線

plot3(x1,y1,z1,選項1,x2,y2,選項2,…,xn,yn,zn,選項n)5,三維曲面

mesh(x,y,z,c)與surf(x,y,z,c)。一般情況下,x,y,z是維數相同的矩陣。X,y是網格坐標矩陣,z是網格點上的高度矩陣,c用于指定在不同高度下的顏色范圍。6,圖像處理

1)imread和imwrite函數 這兩個函數分別用于將圖象文件讀入matlab工作空間,以及將圖象數據和色圖數據一起寫入一定格式的圖象文件。

2)image和imagesc函數 這兩個函數用于圖象顯示。為了保證圖象的顯示效果,一般還應使用colormap函數設置圖象色圖。

三、實驗儀器和設備:

計算機一臺(帶有MATLAB6.5以上的軟件環境)。

四、預習要求:

1.復習二維與三維圖形的繪圖函數。2.復習圖形輔助操作。

五、實驗內容及步驟:

1,設y?[0.5?3sinx]cosx,在x=0~2π區間取101點,繪制函數曲線。21?x

2,已知y1=x2,y2=cos(2x),y3=y1*y2,完成下列操作:

(1)在同一坐標系下用不同的顏色和線型繪制三條曲線;

(2)分別用條形圖、階梯圖、桿圖和填充圖繪制三條曲線。

3,已知

?x??,?x?02?e y???1In(x?1?x2),x?0??2在-5<=x<=5區間繪制函數曲線。

4,繪制函數的曲面圖和等高線

z?cosxcosye?x2?y24

其中x的21個值均勻分布在[-5,5]范圍,y的31個值均勻分布在[0,10],要求使用subplot(2,1,1)和subplot(2,1,2)將產生的曲面圖和登高圖畫在同一個窗口上。

5.畫出函數

z?x2?y2?sin(xy)的曲面及等高線圖。

x2y2?1繪制平面曲線,并分析參數a對其形狀的影響。6.根據2?a25?a2

四、心得體會:

通過這次實驗我能熟練掌握二維和三維圖以及其他特殊圖形的制作,弄清楚了基本的圖形操作規則,大大加深了我對matlab的興趣。

實驗二 MATLAB程序設計

一、實驗目的

1.掌握利用if語句實現選擇結構的方法。

2.掌握利用switch語句實現多分支選擇結構的方法。3.掌握利用for語句實現循環結構的方法。4.掌握利用while語句實現循環結構的方法。

二、實驗設備及條件

計算機一臺(帶有MATLAB6.5以上的軟件環境)。

三、實驗內容

1.編寫求解方程ax2?bx?c?0的根的函數(這個方程不一定為一元二次方程,因a、b、c的不同取值而定),這里應根據a、b、c的不同取值分別處理,有輸入參數提示,當a?0,b?0,c~?0時應提示“為恒不等式!”。并輸入幾組典型值加以檢驗。

clear,clc a=input('請輸入一個數a=');b=input('請輸入一個數b=');c=input('請輸入一個數c=');m=b^2-4*a*c;if a==0

if b==0

'為恒不等式'

end end

m=b^2-4*a*c;if m>0

x1=(-b+sqrt(m))/(2*a)

x2=(-b-sqrt(m))/(2*a)elseif m==0

x=(-b)/(2*a)else

'不存在正實根' end

2.輸入一個百分制成績,要求輸出成績等級A+、A、B、C、D、E。其中100分為A+,90分~99分為A,80分~89分為B,70分~79分為C,60分~69分為D,60分以下為E。

要求:(1)用switch語句實現。

(2)輸入百分制成績后要判斷該成績的合理性,對不合理的成績應輸出出錯信息。

clear,clc for k=1:10

a(k)={89+k};b(k)={79+k};

c(k)={69+k};d(k)={59+k};end A=cell(3,6);A(1,:)={'a','b','c','d','e','f'};A(2,:)={85,76,95,100,40,65};for k=1:6

switch A{2,k}

case 100

r='A+';

case a

r='A';

case b

r='B';

case c

r='C';

case d

r='D';

otherwise

r='E';

end

A(3,k)={r};end A A =

'a'

'b'

'c'

[85]

[76]

[95]

'B'

'C'

'A'

'd'

'e'

[100]

[40]

'A+'

'E'

'f' [65] 'D'

3.利用for循環語句編寫計算n!的函數程序,取n分別為-89、0、3、5、10驗證其正確性(輸入n為負數時輸出出錯信息)。

clear,clc n=input('請輸入一個正數n=');if n<0

'輸入錯誤' elseif n==0

'n!=0' elseif n==1

'n!=1' else

y=1;

for i=1:1:n

y=y*i;

i=i+1;

end

y end 請輸入一個正數n=-89

ans =輸入錯誤 請輸入一個正數n=0

ans =n!=0 請輸入一個正數n=1

ans =n!=1 請輸入一個正數n=3

y =6 請輸入一個正數n=10

y =3628800

四、實驗心得體會:

通過本次實驗課,我能熟練運用for循環語句,switch條件語句以及if條件語句的新用法,和在C中的區別。盡管如此,但是在實驗中依然容易把for循環跟C語言中的for語句弄混,最后經過不懈努力下,終于弄明白了兩者之間的差別,使我能更好的運用這些指令語句。

第五篇:Matlab與Simulink仿真學習心得

Matlab與Simulink仿真學習心得

班級:07610 學號:072016 姓名:呂天雄

一 Matlab學習心得體會與編程實踐

<1>學習Matlab的心得體會

真正開始接觸Matlab是大二上就開始了,到現在已經一年多了,在此之間,Matlab的確為我提供了很多便利。Matlab的確不愧成為是草稿紙上的語言。我們不必去為很簡單的顯示效果圖形去找一些什么其他軟件或者研究比較復雜的計算機圖形學,一個plot或者別的函數往往就可以得到很滿意的效果。

其實最初開始學習matlab的時候感覺這個東西和C沒什么兩樣,但是后來具體到一些 東西,比如信號處理和數學建模上以后才感覺到使用matlab編寫程序去驗證結果比C要節 省很多時間,而且matlab寫東西基本都是按照自己的思路平鋪直敘很少去考慮什么函數的 嵌套調用或者指針等等很頭疼的東西。

關于matlab的學習,我感覺其實百度和matlab自帶的help基本能夠解決絕大數問題,而且一些比較好的論壇比如www.tmdps.cn都會為你產生很大的幫助,關鍵是在于多動手實踐,多思考。但是matlab畢竟只是一個工具,原理和一些基本的編程素質還是必須有的,否則matlab最多也只能是驗證一些別人的東西而已,根本幫不上什么忙的。

<2>遇到的一些問題的思考方式與解決辦法

最開始用matlab的時候是在大物實驗,實驗要求去根據測量得到的數據作出圖。但是 手動用鉛筆去畫確實很麻煩,所以用matlab確實可以省去很大的麻煩。但是第一次遇到問 的時候是有關極化坐標下的曲線擬合。

首先是一個物理實驗的問題;在做一個關于光的偏振的實驗的時候,最后的結果要在一個極化坐標下顯示出來;因為數據是離散的,所以顯示出來的圖像是一個折來折去的一個東東; 然后很自然的想法是對這個曲線進行插值處理。

但是極化坐標下MATLAB并未提供插值處理的函數,interp1這個函數只能在笛卡爾坐標系,也就是直角坐標系下使用。

然后就想到把極坐標的數據轉換的直角坐標系下,pol2cart可以實現這個想法,但是隨后而來,也就是最后導致整個問題失敗的關鍵也在這里。

pol2cart以后產生的一串數據中出現了重復的數據,那么interp1這個東西也就無能為力了,因為interp1不能處理一串數據中有重復出現的情況。最后的處理辦法是把這些數據c os,sin這些東西變換一下后,使其大致規則,然后再用polar畫出極坐標下的圖形。

接下來這個問題就有點超過我的范圍了,可能會有點敘述不清楚。問題可以概要為:人臉網格插值。

這是一個用三角形網格表示的一個人臉模型。需要通過插值使其變得光滑,當然問題的復雜之處在于,插值會改變原本的網格結構。

對于這個問題許多人都給出了解決的辦法,當然是一些關于人臉識別技術和運動圖像處理的范疇之內的。

主要有兩種,第一種是face—ls算法。這種算法是基于RBF(徑向插值函數)和loop細分原則的一種算法,當然其精確程度比較差點。但是速度挺好。原理是:基于網格上的點,產生出頂點的迭代函數,從而產生出新的定點,進行細化。然后進行插值。也就是引進新的頂點。分為兩個過程內部插值和邊緣插值。具體可以去看蘭州大學信息工程學院的學報。

第二種也就是基本的老辦法RBF。首先解釋一下什么叫做徑向插值 徑向基函數

主要是考慮多維空間的數據插值問題,徑向基函數在三維圖形的變形中常常被采用,用其來變分三維人臉的時候還應結合人臉的固有特征。確定該方法來實現三維人臉變形是可行的,但要構造好的基函數,以及解這些高維方程的解仍是難點。插值方法:

假設大多數人臉的形狀都可以由一個拓撲原型變化得來,那么,通過調整一個一般模型的構造參數可以建立不同的面部模型。但是,這種參數模型僅僅局限于那些構造參數已知的情況,并且對特定人臉參數的調整非常困難。在離散數據的多變量插值問題方面,徑向基函數(radial basis function,RBF)插值方法是一個行之有效的工具,所以也適用于類似人臉這樣高維曲面的近似或平滑插值。現有的許多方法使用了基于RBF的插值技術,將一般人臉網格變化到特定人臉的形狀。這種方法的優點在于:(1)通過插值可以得到丟失的數據點,所以源網格和目標網格不需要相同數目的結點;(2)如果選擇了合適的匹配點,數學上可以保證能夠將源網格變形到目標網格。

當然我也不是很懂,只是理解了部分。這種方法的關鍵是找到一個很好的核函數來計算出新的頂點。

最后問題解決的方式是查著了一些圖書館的學報。然后而且在網上找到了部分代碼。然后做出來的。這是我校大四一個同學畢設中的一個東西。

其實這個事件最好的解決辦法是在3D-MAX中,不過因為沒能找到MATLAB與3D-MAX是怎么接口的,所以作罷了。

第三次遇到的問題是我在數學建模課上遇到的一個關于矩陣LU分解的問題:

Matlab作出的結果和手算的結果竟然不一樣。

10??1????1???1?

U=?1? ?一個矩陣 A=? 經過三角分解為L=101????????11?因為1/?為一個極大數 則1—1/?可以看成—1/?;

設?=0.***000000001%10的負24次方

從而L*U=則最后一位1沒有了 變成了0

其中L=

U=Matlab 程序為

epusino=0.***000000001;U=[epusino 1;0-1/epusino];L=[1 0;1/epusino 1];L*U ans =

0.***

1.***

1.***

0 而直接用lu函數對矩陣A分解的結果為

A=[epusino 1;1 1] A =

0.0000

1.0000

1.0000

1.0000

>> [L,U]=lu(A)L =

0.0000

1.0000

1.0000

0

U =

0 我們老師當時的解釋是這是由于我們所用matlab是破解版的緣故,破解版的計算精度 沒正版的高所以導致運算結果的錯誤,后來我看了一些LU這個函數的help文檔 psychologically lower triangular matrix"(i.e.a product of lower triangular and permutation matrices)in L。翻譯過來是L是一個心理上的下三角矩陣,其實是下三角矩陣和置換矩陣也就是最后的結論。P*A = L*U.。由此可見這并不是什么精度的問題導致的結果只是LU分解的矩陣意義和書本上的不同而已。

以下是我自己寫的一些程序的代碼

1:網絡隨機拓撲圖

目的是要生成一個度數隨機、權值隨機的拓撲圖。首先的理解是利用鄰接矩陣,先隨機生成一個矩陣,該矩陣為一個對稱矩陣。然后畫出這個矩陣就行了。

隨機拓撲圖10026516398191 ***0430 ***065

%產生數組A用來存放表示兩點之間權值的矩陣A,也就是臨接矩陣,那么兩點之間權值不為零元素的個數即為該點的度數

DEF=5;%設定一個東東 方便改變隨機點的個數 A=rand(DEF,DEF);%產生DEF*DEF的隨機矩陣 for i=1:DEF A(i,i)=0%將對角線上的數置為0 end A=10*A;A=floor(A);%向下去整 for i=1:DEF for j=1:i A(j,i)=A(i,j)%將A矩陣變為一個上三角或者下三角矩陣 end end x=100*rand(1,DEF);y=100*rand(1,DEF);%產生10個隨機的點 plot(x,y,'r+');

for i=1:DEF a=find(A(i,:)>0)%將A矩陣每行大于0的數的在該行的地址找出來放在a中

for j=1:length(a)

c=num2str(A(i,j));%將A中的權值轉化為字符型

if c~='0'%不顯示為0的值 因為A矩陣為零代表兩點不相連 text((x(i)+x(j))/2,(y(i)+y(j))/2,c,'Fontsize',18);%將權值顯示在兩點連線中間 end hold on;

line([x(i)x(a(j))],[y(i)y(a(j))]);%連線 end end

title('隨機拓撲圖');e=num2str(DEF);legend(e);%左上角顯示節點的個數 for m=1:DEF A(m,m)=m;f=num2str(A(m,m));hold on;text((x(m)+x(m))/2,(y(m)+y(m))/2,f,'Fontsize',18);%將權值顯示在兩點連線中間 end 接下來是一個在信息安全課上寫的一個關于256色圖分層的程序,一副圖像有m*n個像素然后每個像素是一個8bit的二進制數據換算為十進制是0-255之間。要做的就是把每bit的信息提取出來。

I=imread('bupt副本.bmp');%讀入源圖像

I=double(I);%將圖像轉換為double類型便于MATLAB中的計算 %確定圖像的長寬 M=size(I,1);%長 N=size(I,2);%寬 l=M*N;%圖像長寬之積 for n=1:8;%剔除每層 for i=1:M

for j=1:N

B=numdec2bin(I(i,j),8);%先將每個像素轉換為8位2進制序列

B(n)=[];%刪除相應位置的元素

y(i,j)=numbin2dec(B);%將剩下的7個元素轉換為10進制數放入y矩陣中

end end

y=uint8(y);%將10進制的矩陣轉換為無符號整形

subplot(4,2,9-n);%顯示n個圖像,每層是相應的剔除該層的結果

imshow(y);%顯示這個圖像

title(strcat('去除第',num2str(9-n),'層后的結果'));%顯示標題 end

附帶的兩個函數:

function y=numdec2bin(x,n);%從函數將十進制數x轉化為n位二進制 y=zeros(1,n);a=x;i=n;while a>0 y(i)=mod(a,2);a=floor(a/2);i=i-1;end function y=numbin2dec(x)%將二進制數轉換為十進制數 a=0;lx=length(x);for i=1:lx a=a+x(i)*2^(lx-i);end y=a;

去除第1層后的結果去除第2層后的結果去除第3層后的結果去除第4層后的結果去除第5層后的結果去除第6層后的結果去除第7層后的結果去除第8層后的結果

Matlab的RGB轉換為YCbCr之后轉換回來和原圖不符

這個是做JPEG圖像壓縮的時候遇到的一個問題,當時的代碼是用C寫的但是結果不對,后來想到用matlab進行驗證結果發現通過公式轉換得到的圖是錯的。

原理:BMP圖像壓縮為JPEG的第一步是將RGB色彩空間通過這個公式映射到YCbCr空間上。

Y=0.299 R + 0.587 G + 0.114 B Cb =0.3313G + 0.5 B + 128 Cr = 0.5 R0.0813 B + 128 然后再進行量化,DCT,編碼等等步驟。JPEG解壓時需要將YCbCr空間的圖像又轉化回來到RGB上。

R = Y + 1.402(Cr0.34414(Cb-128)128)

B = Y + 1.772(Cb-128)

但是通過書上給的公式和網上大部分公式卻發現根本轉化不會來。下面是寫的程序代碼以及測試得到的結果圖像。

clc,clear;Source=imread('hl.jpg');%讀入原始RGB圖像

figure(1);subplot(1,2,1);imshow(Source):title('original image');%顯示圖像 [r c d]=size(Source);%計算圖像大小 %------計算紅色分量并顯示分解圖------% R(:,:,1)=Source(:,:,1);R(:,:,2)=zeros(r,c);R(:,:,3)=zeros(r,c);R=uint8(R);whos;figure(2);subplot(1,3,1);imshow(R)title('Red Component');%-------計算綠色分量并顯示分解圖-------% G(:,:,2)=Source(:,:,2);G(:,:,1)=zeros(r,c);G(:,:,3)=zeros(r,c);G=uint8(G);figure(2);subplot(1,3,2);imshow(G)title('Green Component');%--------計算藍色分量并顯示分解圖-------% B(:,:,3)=Source(:,:,3);B(:,:,1)=zeros(r,c);B(:,:,2)=zeros(r,c);B=uint8(B);figure(2);subplot(1,3,3)imshow(B)title('Blue Component');%------------合成-------------% Comp(:,:,1)=R(:,:,1);Comp(:,:,2)=G(:,:,2);Comp(:,:,3)=B(:,:,3);figure(1);subplot(1,2,2);imshow(Comp):title('composition image');Y=0.229*R+0.587*G+0.114*B;Cb=0.5*B-0.1687*R-0.3313*G+128;Cr=0.5*R-0.4187*G-0.0813*B+128;red=Y+1.402*(Cr-128);green=Y-0.34414*(Cb-128)-0.71414*(Cr-128);blue=Y+1.772*(Cb-128);Comp2(:,:,1)=red(:,:,1);Comp2(:,:,2)=green(:,:,2);Comp2(:,:,3)=blue(:,:,3);figure(3);imshow(Comp2);title('RGB轉換為YCrCb后又轉換為RGB的圖像');RD=R(:,:,1)-red(:,:,1);GD=G(:,:,2)-green(:,:,2);BD=B(:,:,3)-blue(:,:,3);figure(4);subplot(1,3,1);imshow(RD);title('紅色分量差異');subplot(1,3,2);imshow(GD);title('綠色分量差異');subplot(1,3,3);imshow(BD);title('藍色分量差異');

然而可以通過figure(4)的圖像清楚看到R 和G分量轉換后恢復 與以前的差別很大。而且看了一下matlab自帶的rgb2ycbcr和ycbcr2rgb并且用了這兩個函數測試后圖像是一樣的。很是不解

實驗得到的圖為: original imagecomposition image

將源圖像分為RGB三個部分。

Red ComponentGreen ComponentBlue Component

將源圖像的RGB分量轉換到YCbCr上后又轉化為RGB得到的三個分量差異的圖。

紅色分量差異綠色分量差異藍色分量差異 公式轉換的y分量公式轉換的cb分量公式轉換的Cr分量matlab函數轉換的y分量matlab函數轉換的Cb分量matlab函數轉換的Cr分量

從最后的結果可以看出原圖轉換到YCbCr空間之后又轉化回來得到的圖像與原圖不符….RGB轉換為YCrCb后又轉換為RGB的圖像

以上只是我自己用Matlab做過的部分問題,還有一些比如場聲源定位Music算法仿真,DES加密算法。神經網絡濾波器等等,鑒于代碼量太大,就不再敖述。二 Simulink學習心得與編程實踐

SIMILINK模塊庫按功能進行分類,包括以下8類子庫: Continuous(連續模塊)Discrete(離散模塊)

Function&Tables(函數和平臺模塊)Math(數學模塊)

Nonlinear(非線性模塊)

Signals&Systems(信號和系統模塊)Sinks(接收器模塊)Sources(輸入源模塊)

對于simulink來說其實沒什么好說的,需要什么就把什么拖到Model里面,連線之后設定參數。不是很麻煩的。但是重要的是對于系統的設計與仿真思想才是最重要的。而且里面的S-Function也是比較好的一個設計,用S-Function可以自定義一些組件,使自己的仿真看上去更加清晰與精簡。

Simulink的工作方式:

(1)模塊內的參數值首先會送到Matlab中進行計算,得到的參數值會用來當做以后需要調用的參數。

(2)模型系統中的各個層級將被平展開來,每一個子系統將被相應的模塊所代替。(3)模塊按被處理的順序排列,此時代數回路結構也被檢查出來,此種排列產生一個列表,以確保具有代數回路的模塊驅動輸入的模塊被更新后才更新。

(4)檢查塊之間的鏈接,是否每一個塊的輸出端口與它所連接的模塊輸入端口有相同的信號寬度。

現在可以準備執行仿真操作,仿真時使用數值迭代求的的結果,每種數值積分模型提供的連續狀態的微分能力。

Simulink中的模型都是分級的,因此可以通過自上而下或者自下而上的方式建立模型。定義了一個模型以后,就可以通過Simulink的菜單或者在Matlab的Command中輸入命令進行仿真。

關于學習的心得就寫到這里了,接下來是一些自己做的仿真。

1:觀察一個信號與積分之后的區別,目的是了解Scope的功能和用法。

仿真結果,左邊為原始信號,右邊為積分后的信號。

用XYGraph看到的對比

Rossler吸引子產生仿真:

Rossler 吸引子產生是服從下面這個方程的 1

212 331

仿真圖 ???(x?x)x??x?axx??b?x(x?c)xa?b?0.2c?5.7

仿真結果

LMS自適應濾波器: 仿真圖:

遇到的問題

問題的解決辦法:

將Spectrum Scope中的buffer input打勾就行了。

仿真結果圖形:

1:Spectrum Scope的輸出圖形

2:Vector Scope的輸出結果

3:Scope的輸出結果圖形

下載電子信息MATLAB系統仿真與設計word格式文檔
下載電子信息MATLAB系統仿真與設計.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    基于MATLAB的通信系統的仿真報告參考例文

    摘要 Simulink是Mathworks公司推出的基于Matlab平臺的著名仿真環境Simulin作為一種專業和功能強大且操作簡單的仿真工具,目前已被越來越多的工程技術人員所青睞,它搭建積木......

    控制系統的Matlab仿真與設計課后答案

    MATLAB課后習題答案 2.1 x=[15 22 33 94 85 77 60] x(6) x([1 3 5]) x(4:end) x(find(x>70)) 2.3 A=zeros(2,5); A(:)=-4:5 L=abs(A)>3 islogical(L) X=A(L) 2.4 A=[4,15,......

    控制系統的MATLAB仿真與設計課后答案

    第二章 1>>x=[15 22 33 94 85 77 60] >>x(6) >>x([1 3 5]) >>x(4:end) >>x(find(x>70)) 2>>T=[1 -2 3 -4 2 -3] ; >>n=length(T); >>TT=T'; >>for k=n-1:-1:0 >>B(:,n-k)=TT......

    基于Matlab的ASK仿真

    基于MATLAB的2ASK調制 根據數字帶通調制原理,運用MATLAB進行編程,仿真調制過程,記錄并分析仿真結果。 形成設計報告。 課程設計需要運用MATLAB編程實現2ASK,2FSK,2PSK,2DPSK調......

    基于matlab電力系統故障分析與仿真[精選五篇]

    課程設計說明書 題目名稱:基于Matlab的電力系統故障分析與仿真 系 部: 電力工程系 專業班級: 電氣工程 學生姓名: 學......

    信號與系統 MATLAB實驗報告

    院系: 年級: 姓名: 實驗時間: 實驗地點: MATLAB實驗報告 專業:班號: 學號:1 《信號與系統》實驗一 連續時間信號的表示及可視化 實驗題目: f(t)??(t);f(t)??(t);f(t)?eat(分別取a?0及a?0); f(t)......

    基于 Matlab 的離散控制系統仿真

    2014 / 2015 學年第 1 學期 計算機控制技術 實班 級 學 生 指 導 驗 報 告 學 號 1108030301 姓 名 蔡 夢 教 師 張 坤 鰲 實驗二 基于 Matlab 的離散控制系統仿真 一、......

    《信號處理matlab仿真》大作業

    中國石油大學(華東)信息與控制工程學院 《信號處理matlab仿真》結課作業 專業班級:電子班 學號:***** 姓名:****** 任課老師:***** 2088年11月12日 《信號處理matlab仿真》結課作......

主站蜘蛛池模板: 国产高清av首播原创麻豆| 久久精品成人一区二区三区| 欧美亚洲高清国产| 精品少妇人妻av无码专区| 国产欧美成aⅴ人高清| 97免费人妻在线视频| 欧美mv日韩mv国产网站| 野花社区视频www官网| 国产精品国产自线拍免费不卡| 四虎国产精品成人| 美女露出奶头扒开尿口免费网站| 亚洲成av人影片在线观看| 国产+日韩+另类+视频一区| 亚洲成av人片在线观看无| 丰满熟妇被猛烈进入高清片| 人人玩人人添人人澡| 精品夜夜爽欧美毛片视频| 日本高清二区视频久二区| 国产va在线观看免费| 97久久香蕉国产线看观看| 国产情侣疯狂作爱系列| 亚洲色精品88色婷婷七月丁香| 97精品国产一区二区三区| 亚洲熟妇另类久久久久久| 少妇又色又紧又爽又刺激视频| 午夜福利理论片在线观看播放| 国产亚洲一区二区手机在线观看| 无码日韩精品一区二区人妻| 亚洲综合久久一本伊一区| 亚洲中文字幕久久精品无码a| 熟妇的荡欲色综合亚洲| 亚洲日韩中文无码久久| 97久久精品午夜一区二区| 亚洲精品无码久久久久久久| 国产日韩av无码免费一区二区| 777米奇影院狠狠色| 亚洲精品一区久久久久一品av| 亚洲第一网站男人都懂| 久久久久国产精品人妻aⅴ免费| 亚洲精品国产精品制服丝袜| 人妻换着玩又刺激又爽|