第一篇:Android實驗報告—網絡通信
實驗三
Android網絡通信
實驗目的:
本實驗的目的是使學生深入了解利用Intent實現進程間的通信過程。學會利用Intent進行Activity的跳轉,以及鏈接網頁信息;學會利用Intent將其他Activity的信息返回到Activity中的方法。體會Activity間通信的過程。
實驗要求:
編程實現下述功能:主界面上有一個“登錄”按鈕和“鏈接網頁”按鈕,點擊“登錄”按鈕后打開一個新的Activity;新的Activity上面有輸入用戶名和密碼的控件(如下圖所示)點擊“鏈接網頁”按鈕,新的Activity上面有輸入Uri信息的控件,可以鏈接到相應的網站,在用戶關閉這個Activity后,返回到主界面中
程序界面如下圖所示:
[實現提示]
1、建立Android工程,其中 工程名稱:WebCommunication579
包名稱:cn.edu.bistu.dj1001.WebCommunication579 Activity名稱:WebCommunication579
2、工程建立完畢后,首先進行界面設計,建立相應的子Layout界面
3、在工程中添加相應的.java文件,處理各個Activity的事件響應
4、在Manifest中添加新建的Activity信息,進行注冊。
程序源碼:
主界面java文件代碼: package cn.deu.bistu.dj1001.WebCommunication579;
import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;
public class WebCommunication579 extends Activity { private Button btnLogin,btnGoToWeb;private TextView show;private static final int SUBACTIVITY1 = 1;@Override
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);btnLogin=(Button)findViewById(R.id.btnLogin);btnGoToWeb=(Button)findViewById(R.id.btnGoToWeb);show=(TextView)findViewById(R.id.A1show);
btnLogin.setOnClickListener(new OnClickListener(){ public void onClick(View v){ Intent intent = new Intent(WebCommunication592.this, activity1.class);
startActivityForResult(intent, SUBACTIVITY1);
}});btnGoToWeb.setOnClickListener(new OnClickListener(){ public void onClick(View v){ Intent intent = new Intent(WebCommunication592.this, activity2.class);startActivity(intent);}});} protected void onActivityResult(int requestCode, int resultCode, Intent data){ super.onActivityResult(requestCode, resultCode, data);switch(requestCode){ case SUBACTIVITY1: if(resultCode == RESULT_OK){Uri uriData = data.getData();show.setText(uriData.toString());} break;}};} 界面一java文件代碼:
package cn.deu.bistu.dj1001.WebCommunication579;
import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;
public class activity1 extends Activity { private Button btnOK,btnCancel;private EditText edtInput;public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity1);edtInput=(EditText)findViewById(R.id.edtA1Input);btnOK=(Button)findViewById(R.id.btnA1OK);btnCancel=(Button)findViewById(R.id.btnA1Cancel);btnOK.setOnClickListener(new OnClickListener(){
public void onClick(View v){ String uriString = edtInput.getText().toString();Uri data = Uri.parse(uriString);Intent result = new Intent(null, data);setResult(RESULT_OK, result);finish();}});btnCancel.setOnClickListener(new OnClickListener(){ public void onClick(View view){ finish();}});}} 界面二java文件代碼:
package cn.deu.bistu.dj1001.WebCommunication579;
import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;
import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;
public class activity2 extends Activity { private EditText edtInput;private Button btnOK,btnCancel;public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity2);edtInput=(EditText)findViewById(R.id.edtA2Input);btnOK=(Button)findViewById(R.id.btnA2OK);btnCancel=(Button)findViewById(R.id.btnA2Cancel);btnOK.setOnClickListener(new OnClickListener(){ public void onClick(View v){ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(edtInput.getText().toString()));startActivity(intent);}});btnCancel.setOnClickListener(new OnClickListener(){
public void onClick(View v){
finish();
}});}} 主界面的xml文件代碼:
xmlns:android=“http://schemas.android.com/apk/res/android” android:orientation=“Horizontal” android:layout_width=“fill_parent” android:layout_height=“fill_parent”> android:text=“" android:id=”@+id/A1show“ android:layout_width=”wrap_content“ android:layout_height=”wrap_content“>
界面一的xml文件代碼:
android:orientation=”Horizontal“ android:layout_width=”fill_parent“ android:layout_height=”fill_parent“ xmlns:android=”http://schemas.android.com/apk/res/android“> android:layout_width=”wrap_content“ android:layout_height=”wrap_content“> android:text=”用戶名和密碼:“ android:layout_width=”wrap_content“ android:layout_height=”wrap_content“> android:text=”“ android:id=”@+id/edtA1Input“ android:layout_width=”wrap_content“ android:layout_height=”wrap_content“> android:layout_width=”wrap_content“ android:layout_height=”wrap_content“>
界面二的xml文件代碼: xmlns:android=”http://schemas.android.com/apk/res/android“> android:text=”“ android:id=”@+id/edtA2Input“ android:layout_width=”match_parent“ android:layout_height=”wrap_content“>
程序運行結果:
程序包:
主界面:
點擊登錄按鈕后:
點擊確定按鈕后:
點擊鏈接網頁按鈕后:
點擊確定按鈕后:
實驗心得體會:
通過本次實驗深入了解了Intent實現進程間的通信過程。熟悉了利用Intent將其他Activity的信息返回到Activity中的方法,可以更熟練的使用安卓編程軟件。
第二篇:android實驗報告
移動應用開發實驗報告
實驗名稱
音樂播放器
班
級
學
號
姓
名
指導教師
實驗成績
2016 年04月
一、實驗目的
本項目是一款基于Android手機平臺的音樂播放器,使Android手機擁有個性的多媒體播放器,使手機顯得更生動靈活化,與人們更為接近,讓手機主人隨時隨地處于音樂視頻的旋律之中。使人們的生活更加多樣化。也使設計者更加熟練Android的技術和其它在市場上的特點。
二、實驗內容及要求
在其中寫清楚這個實驗具體要你做什么,怎么做,要達到什么樣的效果等。本設計實現的主要功能是播放Mp3,Wav多種格式的音樂文件,并且能夠控制播放,暫停,停止,下一首,上一首播放列等基本播放控制功能,界面簡明,操作簡單。
三、實驗方案設計
在其中寫清楚你的程序的詳細設計,用流程圖配文字的形式描述。如果其中涉及到算法,一定要把算法闡述清楚。
3.1.1假設安裝了音樂播放器的用戶是系統的主要設計對象,其擁有以下操作,啟動軟件、播放音樂、暫停播放、停止播放、退出軟件,其用例圖如下
圖2.1 播放器基本用例圖
3.1.2用例分析 ?用例名稱:啟動軟件 參與者:用戶
目標:使得用戶啟動軟件并加載手機和sd卡上的音頻文件到播放列表 前置條件:無
基本事件流:1.用戶啟動軟件
2.播放器將播放列表中的當前的歌曲
?用例名稱:播放 參與者:用戶
目標:使得用戶可以播放在播放列表中選中的歌曲 前置條件:播放器正在運行
基本事件流:1.用戶單擊“播放”按鈕
2.播放器將播放列表中的當前的歌曲
?用例名稱:暫停 參與者:用戶
目標:使得用戶可以暫停正在播放的歌曲 前置條件:歌曲正在播放且未停止和暫停 基本事件流:1.用戶單擊“暫?!卑粹o
2.播放器將暫停當前的歌曲
④用例名稱:停止 參與者:用戶
目標:使得用戶可以停止正在播放的歌曲 前置條件:歌曲正在播放或暫停 基本事件流:1.用戶單擊“停止”按鈕
2.播放器將停止當前播放的歌曲
⑤用例名稱:推出 參與者:用戶
目標:使得用戶退出或者后臺播放音樂 前置條件:程序在運行
基本事件流:1.用戶按返回鍵
2.播放器退出或者進入后臺播放
四、實驗測試
Step1.啟動軟件后,軟件自動檢索手機和sd卡的音頻文件,并組織顯示成列表.Step2.點擊列表的歌曲名字。
Step3.播放音樂。
Step4.點擊暫停,音樂暫停
Step5.點擊播放 轉到step3 Step6.點擊停止 停止播放音樂
Step7.點擊退出,若音樂處于播放狀態,則音樂轉向后臺播放,界面退出。
Step8.點擊退戶,若音樂處于暫停或者停止狀態,直接退出。
音樂播放器流程圖
4.1MusicInfoController類
這個類繼承于service,是播放音樂的服務類。播放音樂,暫停音樂,停止播放等操作都封裝在這個類中。
主要的執行動作有:
4.1.1.類啟動 onCreate(){
mMediaPlayer = new MediaPlayer();//分配一個播放對象
mMediaPlayer.setOnPreparedListener(mPrepareListener);//綁定之前
mMediaPlayer.setOnCompletionListener(mCompleteListener);//綁定之 后
}
4.1.2.服務綁定activity
MediaPlayer.OnCompletionListener mCompleteListener = new
MediaPlayer.OnCompletionListener()//實例化一個綁定監聽器的匿名類
{
public void onCompletion(MediaPlayer mp)//完成綁定后
{
broadcastEvent(PLAY_COMPLETED);//廣播消息
}
};
4.2MusicInfoController類
這個類主要用于獲取android系統中的音頻文件,并提供訪問接口,它是一個單例類。
4.2.1獲得播放文件列表
private Cursor query(Uri uri, String[] prjs, String selections, String[] selectArgs, String order){ ContentResolver resolver = pApp.getContentResolver();//取得一個連接對象if(resolver == null){
return null;
}
return resolver.query(uri, prjs, selections, selectArgs, order);} public Cursor getAllSongs(){
return query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);//查詢ContentResolver 的所有音頻文件
} 4.3MusicList類
改類繼承于ListActivity,主要用于顯示歌曲列表,并且封裝部分操作,以及與父級目標通信。
4.3.1播放
protected void onListItemClick(ListView l, View v, int position, long id){ //歌曲列表的某項被點擊
super.onListItemClick(l, v, position, id);
if(mCursor == null ||mCursor.getCount()== 0){
return;
}
mCursor.moveToPosition(position);//游標移動到當前路徑
String url = mCursor.getString(mCursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));//取得絕對路徑
mMusicPlayerService.setDataSource(url);//傳遞絕對路徑
mMusicPlayerService.start();//播放音樂
}
4.3.2暫停/播放
mPlayPauseButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
if(mMusicPlayerService!= null &&
mMusicPlayerService.isPlaying()){
mMusicPlayerService.pause();//音樂播放的服務暫停
mPlayPauseButton.setText(R.string.play);//改變按鈕文字
} else if(mMusicPlayerService!= null){
mMusicPlayerService.start();//如果已經是暫停,則播放音樂
mPlayPauseButton.setText(R.string.pause);//改變文字
}
}
});
4.3.3停止
mStopButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
// Perform action on click
if(mMusicPlayerService!= null){
mTextView.setVisibility(View.VISIBLE);//改變文字狀態
mPlayPauseButton.setVisibility(View.INVISIBLE);//隱藏按鈕
mStopButton.setVisibility(View.INVISIBLE);//隱藏停止按鈕
mMusicPlayerService.stop();//后臺音樂停止播放
}
}
});4.4MusicPlayerApp類
該類繼承與Application,是程序的生存類。可以標識音樂播放器的生命周期,包括音樂在后臺播放等。
4.4.1單例模式
public void onCreate(){
super.onCreate();
mMusicInfoController = MusicInfoController.getInstance(this);//返回該類的一個唯一實例
}
public MusicInfoController getMusicInfoController(){
return mMusicInfoController;}
五、程序的使用手冊
系統編譯生成apk文件,將apk文件拷到手機或者sd卡中,直接打開即可安裝,或者安裝360手機助手通過usb調試的方式進行安裝。
啟動軟件后,加載歌曲列表現在這個界面上,如01表示歌曲名,unknown表示歌曲的演唱者
軟件啟動界面
從加載的歌曲列表中點擊要播放的歌曲,開始播放
音樂播放界面
六、心得體會
通過對Android手機平臺的音樂播放器軟件的開發,使我對Android音樂播放器系統的整體設計有一個深入的了解,對整個流程也會有一個清晰的認識。開發Android音樂播放器,要抓住開發的核心部分,音樂播放器大體由播放主界面、播放列表、菜單、播放設置、文件瀏覽、歌曲搜索六大核心組成,只要掌握了這六部分的開發,音樂播放器就能初具規模。而其它的功能都是在這六個功能的基礎上去補充添加的,但是這是功能的確是必不可少的功能,否則就不能算是音樂播放器了。
第三篇:無線網絡通信實驗報告
Compilation of reports 20XX 報 告 匯 編
實
驗
報
告
課程名稱:
無線網絡通信技術
實驗項目:
無線網絡通信技術實驗
實驗地點:
逸夫樓
404
教室
專業班級:
軟 1121 班 學號:
2011005541
學生姓名:
高
貝
指導教師:
張巍
2014 年月
日
報告文檔·借鑒學習
太原理工大學實驗報告一
學院名稱 軟件學院 專業班級 1121 實驗成績
學生姓名 高貝 學號 2011005541
實驗日期 2014.5.9 課程名稱 無線網絡通信技術
實驗題目 實驗一
四相移相鍵控(QPSK)調制及解調實驗 一、實驗目的和要求:
1、掌握 QPSK 調制解調原理及特性。
2、掌握利用 MATLAB 編程實現調制及解調的方法。
二、實驗內容: 1、利用 MATLAB 編程實現 QPSK 調制及解調。
2、觀察 I、Q 兩路基帶信號的特征及與輸入 NRZ 碼的關系。
3、觀察 I、Q 調制解調過程中各信號變化。
三、主要儀器設備 Win7 32 位操作系統筆記本電腦及 MATLAB R2009a 四、主要操作方法與實驗步驟 在 matlab 下運行下列代碼:
程序代碼 %日期
2013.1.14 %功能
QPSK的調制解調,基帶信號點數t(限偶數),基波頻率w0可設置 clear all;
nb=32;
% 傳輸的比特數
T=1;
% 基帶信號寬度,也就是基波頻率 fc=8/T;
% 載波頻率 ml=2;
% 調制信號類型的一個標志位(選取2的原因見23行)
c = 4*nb;
%單周期采樣點數 delta_T=T/c;
% 采樣間隔 fs=1/delta_T;
% 采樣頻率 t=0:delta_T:nb*T-delta_T
% 限定t的取值范圍 c * nb N=length(t);
% 采樣數
報告文檔·借鑒學習%%%%%%%%%%%%%%%%%%%
調制部分 % 基帶信號的產生 data=fix(2*rand(1,nb));
% 調用一個隨機函數(0 or 1),輸出到一個1*100的矩陣 datanrz=data.*2-1;
% 變成極性碼 for i=1:nb
data1((i-1)/delta_T+1:i/delta_T)=datanrz(i);% 將極性碼變成對應的波形信號 end
% 將基帶信號變換成對應波形信號 for i=1:nb
data0((i-1)/delta_T+1:i/delta_T)=data(i);% 將基帶信號變成對應的波形信號 end
% 串并轉換,將奇偶位數據分開 idata=datanrz(1:ml:(nb-1));
% 將奇偶位分開,因此間隔m1為2
qdata=datanrz(2:ml:nb);% QPSK信號的調制 for i=1:nb/2
ich(2*((i-1)/delta_T+1):2*(i/delta_T))=idata(i);end for ii=1:N/T
a(ii)=(1/sqrt(2))*cos(2*pi*fc*t(ii));
end idata1=ich.*a;
% 奇數位數據與余弦函數相乘,得到一路的調制信號 for j=1:nb/2
qch(2*((j-1)/delta_T+1):2*(j/delta_T))=qdata(j);end
for jj=1:N/T
b(jj)=(1/sqrt(2))*sin(2*pi*fc*t(jj));end qdata1=qch.*b;% 偶數位數據與余弦函數相乘,得到另一路的調制信號 st = idata1-qdata1;%%%%%%%%%%%%%%%%%%%%%%%%信道中 SNR=0;
% 信噪比 stn = awgn(st,SNR);%%%%%%%%%%%%%%%%%%%%%%%%解調%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%設計濾波器%%%%%%%% [B,A] = butter(3,0.01,“low”);[h1,w] = freqz(B,A);%%%%%%%%%%%%%%%%%%%%%%%%%%%%相干解調 ist = stn.* a;p =length(ist)qst = stn.*(-b);
報告文檔·借鑒學習%%%%%%%%%%%%%%%%%%%%濾波 istl = filter(B,A,ist);qstl = filter(B,A,qst);%%%%%%%%%%%%%%%%%%%%%%%%%抽樣判決%%%%%%%%%%
for i = 1 : nb/2
if istl(2*(p/nb)*(i-1)+(1*(p/nb)))>= 0
in(i)= 1;
else in(i)= 0;
end
if qstl(2*(p/nb)*(i-1)+(1*(p/nb)))>= 0
qn(i)= 1;
else qn(i)= 0;
end end %%%%%%%%%%%%%%%%%并串轉換 for i = 1 : nb/2
y(2*i-1)= in(i);
y(2*i)= qn(i);end for i = 1 : nb
yy((i-1)/delta_T+1:i/delta_T)= y(i);end data y N figure;subplot(4,1,1)plot(data0*0.7),title(“基帶信號,4096維二進制序列,對應向量是data0”);subplot(4,1,2)plot(data1*0.7),title(“雙極性信號,4096維雙極性序列,對應向量是data1”);subplot(4,1,3)plot(ich*0.7),title(“I路數據,4096維雙極性序列,對應向量是ich”);subplot(4,1,4)plot(qch*0.7),title(“Q路數據,4096維雙極性序列,對應向量是qch ”);figure;subplot(4,1,1)plot(ist),title(“相干解調I路信號,4096維且值為(-1,1)的序列,對應向量是ist ”);subplot(4,1,2)plot(qst),title(“相干解調Q路信號,4096維且值為(-1,1)的序列,對應向量是qst ”);subplot(4,1,3)plot(istl),title(“I路解調波形,4096維且值為(-1,1)的序列,對應向量是istl ”);subplot(4,1,4)plot(qstl),title(“Q路解調波形,4096維且值為(-1,1)的序列,對應向量是qstl ”);
報告文檔·借鑒學習%%%%%%%%%%%%%%%%%畫圖%%%%%%%%%%%%%%%%%%%%%%%%%%% figure;subplot(4,2,1);plot(data0*0.7),title(“基帶信號”);subplot(4,2,2);psd(abs(fft(data0))),title(“基帶信號頻譜”);subplot(4,2,3);plot(st),title(“調制信號”);subplot(4,2,4);psd(abs(fft(st))),title(“調制信號頻譜”);subplot(4,2,5);plot(stn),title(“stn信道波形”);subplot(4,2,6);psd(abs(fft(stn))),title(“經過高斯信道信號頻譜”);subplot(4,2,7);plot(yy*0.7),title(“解調后的基帶信號”);subplot(4,2,8);psd(abs(fft(yy))),title(“解調后的基帶信號頻譜”);五、實驗結果與分析 結果附圖:
報告文檔·借鑒學習
報告文檔·借鑒學習
六、討論、心得 第一個實驗因為老師把代碼已經附給我們,直接在 MATLAB 下運行此代碼就可出現結果。通過學習老師的實驗一 PPT 以及實驗指導書,了解 掌握 QPSK 調制解調原理及特性,和掌握利用 MATLAB 編程實現調制及解調的方法。
七 七.輔導教師點評:
教師簽字:
報告文檔·借鑒學習
太原理工大學實驗報告二
學院名稱 軟件學院 專業班級 1121 實驗成績
學生姓名 高貝 學號 2011005541
實驗日期 2014.5.10 課程名稱 無線網絡通信技術
實驗題目 m 序列產生及其特性實驗 一.
實驗目的和要求:
通過本實驗掌握 m 序列的產生方法、特性及應用。
二、實驗內容: 1、編寫 MATLAB 程序生成并觀察 m 序列,識別其特征。
2、編寫程序驗證 m 序列的相關性質,要求至少驗證一條性質。
三、主要儀器設備 Win7 32 位操作系統筆記本電腦及 MATLAB R2009a 四、主要操作方法與實驗步驟:
(1)按照圖 2-1,設計 4 階 m 序列產生方法。
?1a2a3a4a移位時鐘信號模 模2 相加器序列輸出
圖 2-1階移位寄存器序列生成器
編寫MATLAB程序并上機調試,最后要求輸出周期為15的m序列
(3)編寫程序驗證 m 序列的相關性質,要求至少驗證一條性質。
m m 序列的特點 ①平衡特性 ?
在 m 序列的一周期中,“1”的個數僅比“0”的個數多 1,即“1”的個數為(N+1)/2,“0”的個數為(N-1)/2。(N 為周期)
報告文檔·借鑒學習? 例如,由 4 階移位寄存器序列生成器產生的序列 *** 中,“1”的個數為 8,“0”的個數為 7。
②游程分布特性
? 把一個序列中取值相同的那些連在一起的元素合稱為一個“游程”。
? 在一個游程中元素的個數稱為游程長度。例如,同樣是在*** 序列,共有 000、1111、0、1、0、11、00 和 1 共 8 個游程。
? 其中,長度為 4 的游程有 1 個;長度為 3 的游程有 1 個;長度為 2 的游程有 2 個;長度為 1 的游程有 4 個。
? 在 m 序列中,長度為 1 的游程占游程總數的 1/2;長度為 2 的游程占游程總數的 1/4;長度為 3 的游程占游程總數的 1/8……。
③延位相加特性
一個 m 序列 M1 與其經任意次遲延移位產生的另一個不同序列 M2 進行模 2 相加,得到的仍是 M1 的某次遲延移位序列 M3。即:
M3=M1 ⊕ M2 例如,m=7 的 m 序列 M1 =1110010,M2 =0111001,1110010⊕0111001=1001011。而將 M1向右移位 5 次即得到 1001011 序列。
五、實驗結果與分析 1、按照課本 P182 圖 5-5,設計 4 階 m 序列產生方法。
如下代碼產生:
X1=1;X2=0;X3=0;X4=0;%移位寄存器輸入Xi初T態(1000),Yi為移位寄存器各級輸出 m=15;
%置M序列總長度 for i=1:m
%1#
Y4=X4;
Y3=X3;
Y2=X2;
Y1=X1;
X4=Y3;
X3=Y2;
X2=Y1;
X1=xor(Y1,Y4);
%異或運算
if Y4==0
U(i)=0;
else
U(i)=Y4;end end M=U fprintf(“1的個數”)sum(M==1)fprintf(“0的個數”)sum(M==0)
2、編寫 MATLAB 程序并上機調試,最后要求輸出周期為 15 的 m 序列“***”。
輸入上面代碼,產生如下圖結果:
報告文檔·借鑒學習
3、編寫程序驗證 m 序列的相關性質,如平衡特性,游程分布特性,延位相加特性。要求至少驗證一條性質。
上面代碼驗證了平衡特性。
在 m 序列的一周期中,“1”的個數僅比“0”的個數多 1,即“1”的個數(N+1)/2,“0”的個數為(N-1)/2。(N 為周期)
上面代碼實現的結果 1 的個數為 8,0 的個數為 7.六、討論、心得
此次實驗中應注意:X1=xor(Y1,Y4);
%異或運算,是這個實驗代碼的難點,通過老師的提點,和在網上找資料,終于解決了這個實驗。通過本實驗也掌握 m序列的產生方法和特性。
七、輔導教師點評:
報告文檔·借鑒學習教師簽字:
太原理工大學實驗報告三
學院名稱 軟件學院 專業班級 1121 實驗成績
學生姓名 高貝 學號 2011005541
實驗日期 2014.5.16 課程名稱 無線網絡通信技術
實驗題目 信道編碼 一、實驗目的和要求:
1、學習并理解信道編碼的根本目的、技術要求等基本概念 2.學會使用MATLAB實現奇偶監督碼的檢錯模擬與分析 二、實驗內容: 1、輸入任意行任意列的一個二進制序列,也即發送碼組,再加上 1 位監督位,在接收端使用奇偶監督碼中的偶數監督碼進行檢錯。
2、若發送碼組為 1100111,要求加上 1 位監督位,在接收端使用奇偶監督碼中的偶數監督碼進行檢錯。
三、主要儀器設備 Win7 32 位操作系統筆記本電腦及 MATLAB R2009a 四、主要操作方法與實驗步驟: 1、輸入任意行任意列的一個二進制序列,也即發送碼組,再加上 1 位監督位,在接收端使用奇偶監督碼中的偶數監督碼進行檢錯。
如下代碼輸入 matlab 中:
方法一:
clc;clear;
m=input(“請輸入行:”);
n=input(“請輸入列:”);
A=randint(m,n);
A
for k=1:2
sum=zeros(1,m);
l=input(“請選擇奇偶校驗(0、偶校驗
1、奇校驗):”);
for i=1:m
報告文檔·借鑒學習for j=1:n
sum(i)=sum(i)+A(i,j);
z=sum(i);
end
if rem(z,2)==l
A(i,n+1)=0;
else
A(i,n+1)=1;
end
end
A
end
方法二:
%奇偶校驗 2 的源代碼
clc;clear;
m=input(“請輸入行:”);
n=input(“請輸入列:”);
A=randint(m,n);
A
for k=1:2
sum=zeros(1,m);
for i=1:m
for j=1:n
sum(i)=sum(i)+A(i,j);
z=sum(i);
end
if rem(z,2)==k-1
A(i,n+1)=0;
else
A(i,n+1)=1;
end
end
if k==1
fprintf(“偶校驗:”)
else
fprintf(“奇校驗:”)
end
A
end
報告文檔·借鑒學習
運行后得到如下結果:
2、若發送碼組為 1100111,要求加上 1 位監督位,在接收端使用奇偶監督碼中的偶數監督碼進行檢錯。
把上面代碼的隨機函數改為固定的發送碼 1100111,得到如下代碼:
clc;clear;
m=input(“請輸入行:”);
n=input(“請輸入列:”);
A=[1 1 0 0 1 1 1];
A
for k=1:2
sum=zeros(1,m);
l=input(“請選擇奇偶校驗(0、偶校驗
1、奇校驗):”);
for i=1:m
for j=1:n
sum(i)=sum(i)+A(i,j);
z=sum(i);
end
if rem(z,2)==l
A(i,n+1)=0;
報告文檔·借鑒學習else
A(i,n+1)=1;
end
end
A
end
得到如下結果:
五、討 論、心得 這次實驗剛開始不理解實驗的意圖,通過網上查找資料了解之后才理解,學會了使用 MATLAB 實現奇偶監督碼的檢錯模擬和分析,要注意之后老師給了兩個代碼中要用到的重要的函數:
randint(m,n)表示隨機產生一個二進制序列;
rem(x,y)表示x 除以 y 的余數,對實驗的完成起到一定幫助。
六、輔導教師點評:
報告文檔·借鑒學習教師簽字:
太原理工大學實驗報告四
學院名稱 軟件學院 專業班級 1121 實驗成績
學生姓名 高貝 學號 2011005541
實驗日期 2014.5.17 課程名稱 無線網絡通信技術
實驗題目 基于 Simulink 的通信系統建模與仿真 實驗目的和要求:
1、通過利用 matlab simulink,熟悉 matlab simulink 仿真工具。
2、通過實驗更好地掌握課本相關知識,熟悉 2ASK 的調制與解調。
二、實驗內容: 使用 MATLAB 中的 Simulink 工具箱搭建 ASK 調制及解調的框圖(使用模擬相乘法及相干解調法)三、主要儀器設備 Win7 32 位操作系統筆記本電腦,及軟件 MATLAB R2009a 四、主要操作方法與實驗步驟: 1、首先進入 matlab,在命令窗口輸入 simulink,進入 simulink 界面。
2、然后使用 Simulink 中的工具,畫出如下的 ASK 調制及解調的框圖。
3、simulink 中包括很多模塊,比如積分模塊,傳遞函數模塊等,simulink 功能非常強大。要想在 simulink 中建模,首先要建立一個空白頁,然后將所需要的模塊從模塊庫中拖入,然后對模塊設置參數即可。完成框圖后,再單擊 File 菜單中的 Save 命令進行保存,保存的擴展名為.mdl 文件。
報告文檔·借鑒學習
五、實驗結果與分析 1、打開 MATLAB 使用 Simulink 中的工具,畫出 ASK 調制及解調的框圖,然后對模塊設置參數(參數為實驗指導書所要求)。
2、點擊黑色三角按鈕運行,雙擊示波器,出現如下波形:
報告文檔·借鑒學習
由仿真結果可知,相比而言,ASK 調制在解調時對于濾波器與噪聲參數的設置最為敏感,在理論值情況下,其解調波形邊沿仍存在不規則形狀。
1.ASK 信號解調時對于濾波器參數敏感,應注意根據實際調整濾波器參數。而且,與其他數字調制方式相比,ASK 對噪聲更為敏感。
2.當 ASK 信號信源幅度為 1 時,判決器判決門限并非 0.5,而應該設置為0.25。這是因為:假設信源為 m(t),載波為 cos 錯誤!。
未找到引用源。,則解調信號為 m(t)* co 錯誤!未找到引用源。= m(t)*(錯誤!未找到引用源。)= 錯誤!未找。
到引用源。+ 錯誤!。
未找到引用源。,經過低通濾波器后僅剩下 錯誤!未找到引用源。一項,故判決時應將門限設置此項的一半,即 0.25。
六、討論、心得 此實驗要主意示波器的兩個輸入,才能鏈接序列產生器。利用 MATLAB 的Simulink 的工具,很容易的進行 2ASK 的調制與解調的仿真實驗,相對前兩個實驗,難度較低些,只要按照老師的實驗指導書一步步的做,很容易得到實驗結果。
七 七.輔導教師點評:
報告文檔·借鑒學習
教師簽字:
第四篇:Android實驗報告—UI設計(定稿)
Android UI設計
實驗目的:
本實驗的目的是使學生深入了解Android程序框架結構、了解和掌握Android界面設計和界面編程。通過程序設計,掌握常用界面控件、菜單、以及界面事件的響應。
實驗要求:
設計程序實現一個電子菜單,應具有顯示菜單功能和選菜功能。通過選擇,將選中的菜單選項在界面做顯示,如下圖:
[實現提示]
1、建立Android工程,其中 工程名稱:MenuSelect579 應用名稱:MenuSelect579 包名稱:cn.edu.bistu.dj1001.MenuSelect579 Activity名稱:MenuSelect579
2、工程建立完畢后,進行相應界面設計,再編寫Java文件
程序源碼
package cn.edu.bistu.dj1001.MenuSelect579;import android.app.Activity;
import android.os.Bundle;import android.view.ContextMenu;import android.view.ContextMenu.ContextMenuInfo;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.TextView;public class MenuSelect579 extends Activity {
/** Called when the activity is first created.*/
TextView LabelView = null;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LabelView =(TextView)findViewById(R.id.label);registerForContextMenu(LabelView);
}
final static int CONTEXT_MENU_1 = Menu.FIRST;
final static int CONTEXT_MENU_2 = Menu.FIRST+1;
final static int CONTEXT_MENU_3 = Menu.FIRST+2;
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo){
menu.setHeaderTitle(“今日菜單”);
menu.add(0, CONTEXT_MENU_1, 0,“宮保雞丁”);
menu.add(0, CONTEXT_MENU_2, 1,“干煸豆角”);
menu.add(0, CONTEXT_MENU_3, 2,“魚香肉絲”);
}
@Override
}
public boolean onContextItemSelected(MenuItem item){
} switch(item.getItemId()){
case CONTEXT_MENU_1: LabelView.setText(“宮保雞丁”);return true;case CONTEXT_MENU_2: LabelView.setText(“干煸豆角”);return true;case CONTEXT_MENU_3: LabelView.setText(“魚香肉絲”);return true;} return false;
程序運行結果:
實驗心得體會:(可選)
通過本次實驗熟悉了android的界面設計簡單方法和界面編程,鍛煉了實際動手能力,熟悉了 Android程序框架結構、Android界面設通過程序設計,掌握了常用界面控件、菜單、以及界面事件的響應。
第五篇:太原理工大學無線網絡通信技術實驗報告
實
驗
報
告
課程名稱:
無線網絡通信技術
實驗項目:
無線網絡通信技術實驗
實驗地點:
致遠樓 B503 教室
專業班級:
**********
學號:
**********
學生姓名:
******
指導教師:
張巍
2017 年 4 月 2 日
太原理工大學實驗報告一
學院名稱
專業班級
實驗成績
學生姓名
學號
實驗日期
課程名稱 無線網絡 通信技術
實驗題目 實驗一
四相移相鍵控(QPSK)調制及解調實驗 一、實驗目的和要求:
1、掌握 QPSK 調制解調原理及特性。
2、掌握利用 MATLAB 編程實現調制及解調的方法。
二、實驗內容: 1、利用 MATLAB 編程實現 QPSK 調制及解調。
2、觀察 I、Q 兩路基帶信號的特征及與輸入 NRZ 碼的關系。
3、觀察 I、Q 調制解調過程中各信號變化。
三、主要儀器設備 Win10
位操作系統筆記本電腦及 MATLAB R2009a 四、主要操作方法與實驗步驟: %日期
2017 %功能
QPSK 的調制解調,基帶信號點數 t(限偶數),基波頻率 w0 可設置 clear all;
nb=32;
% 傳輸的比特數
T=1;
% 基帶信號寬度,也就是基波頻率 fc=8/T;
% 載波頻率 ml=2;
% 調制信號類型的一個標志位 c = 4*nb;
%單周期采樣點數 delta_T=T/c;
% 采樣間隔 fs=1/delta_T;
% 采樣頻率 t=0:delta_T:nb*T-delta_T
% 限定 t 的取值范圍 c * nb N=length(t);
% 采樣數
%%%%%%%%%%%%%%%%%%%
調制部分 % 基帶信號的產生 data=fix(2*rand(1,nb));
% 調用一個隨機函數(0 or 1),輸出到一個 1*100 的矩陣 datanrz=data.*2-1;
% 變成極性碼 for i=1:nb
data1((i-1)/delta_T+1:i/delta_T)=datanrz(i);% 將極性碼變成對應的波形信號
end
% 將基帶信號變換成對應波形信號 for i=1:nb
data0((i-1)/delta_T+1:i/delta_T)=data(i);% 將基帶信號變成對應的波形信號 end
% 串并轉換,將奇偶位數據分開 idata=datanrz(1:ml:(nb-1));
% 將奇偶位分開,因此間隔 m1 為 2
qdata=datanrz(2:ml:nb);% QPSK 信號的調制 for i=1:nb/2
ich(2*((i-1)/delta_T+1):2*(i/delta_T))=idata(i);end for ii=1:N/T
a(ii)=(1/sqrt(2))*cos(2*pi*fc*t(ii));
end idata1=ich.*a;
% 奇數位數據與余弦函數相乘,得到一路的調制信號 for j=1:nb/2
qch(2*((j-1)/delta_T+1):2*(j/delta_T))=qdata(j);end
for jj=1:N/T
b(jj)=(1/sqrt(2))*sin(2*pi*fc*t(jj));end qdata1=qch.*b;% 偶數位數據與余弦函數相乘,得到另一路的調制信號 st = idata1-qdata1;%%%%%%%%%%%%%%%%%%%%%%%%信道中 SNR=0;
% 信噪比 stn = awgn(st,SNR);%%%%%%%%%%%%%%%%%%%%%%%解調%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%設計濾波器%%%%%%%% [B,A] = butter(3,0.01,“low”);[h1,w] = freqz(B,A);%%%%%%%%%%%%%%%%%%%%%%%%%%%%相干解調 ist = stn.* a;p =length(ist)qst = stn.*(-b);%%%%%%%%%%%%%%%%%%%%濾波 istl = filter(B,A,ist);qstl = filter(B,A,qst);%%%%%%%%%%%%%%%%%%%%%%%%%抽樣判決%%%%%%%%%%
for i = 1 : nb/2
if istl(2*(p/nb)*(i-1)+(1*(p/nb)))>= 0
in(i)= 1;
else in(i)= 0;
end
if qstl(2*(p/nb)*(i-1)+(1*(p/nb)))>= 0
qn(i)= 1;
else qn(i)= 0;
end end %%%%%%%%%%%%%%%%%并串轉換 for i = 1 : nb/2
y(2*i-1)= in(i);
y(2*i)= qn(i);end for i = 1 : nb
yy((i-1)/delta_T+1:i/delta_T)= y(i);end data y N figure;subplot(4,1,1)plot(data0*0.7),title(“基帶信號,4096 維二進制序列,對應向量是 data0”);subplot(4,1,2)plot(data1*0.7),title(“雙極性信號,4096 維雙極性序列,對應向量是 data1”);subplot(4,1,3)plot(ich*0.7),title(“I 路數據,4096 維雙極性序列,對應向量是 ich”);subplot(4,1,4)plot(qch*0.7),title(“Q 路數據,4096 維雙極性序列,對應向量是 qch ”);figure;subplot(4,1,1)plot(ist),title(“相干解調 I 路信號,4096 維且值為(-1,1)的序列,對應向量是 ist ”);subplot(4,1,2)plot(qst),title(“相干解調 Q 路信號,4096 維且值為(-1,1)的序列,對應向量是 qst ”);subplot(4,1,3)plot(istl),title(“I 路解調波形,4096 維且值為(-1,1)的序列,對應向量是 istl ”);subplot(4,1,4)plot(qstl),title(“Q 路解調波形,4096 維且值為(-1,1)的序列,對應向量是 qstl ”);%%%%%%%%%%%%%%%畫圖%%%%%%%%%%%%%%%%%%%%%%%%%%% figure;subplot(4,2,1);plot(data0*0.7),title(“基帶信號”);subplot(4,2,2);psd(abs(fft(data0))),title(“基帶信號頻譜”);subplot(4,2,3);
plot(st),title(“調制信號”);subplot(4,2,4);psd(abs(fft(st))),title(“調制信號頻譜”);subplot(4,2,5);plot(stn),title(“stn 信道波形”);subplot(4,2,6);psd(abs(fft(stn))),title(“經過高斯信道信號頻譜”);subplot(4,2,7);plot(yy*0.7),title(“解調后的基帶信號”);subplot(4,2,8);psd(abs(fft(yy))),title(“解調后的基帶信號頻譜”);五、實驗結果與分析
六、討論、心得 第一次使用 MATLAB 軟件,在安裝的過程中也遇到了一些問題,對于實驗一 QPSK 調制與解調,老師在實驗前就已經給出了代碼,并對實驗做了詳細的講解,通過結合老師的實驗 PPT,更深刻的理解了 QPSK 調制解調的原理及特性。通過對每條代碼作用的思考,掌握了利用 MATLAB 編程實現調制及解調的方法和步驟。而且感受到了 MATLAB 軟件的強大之處。
七、輔導教師點評:
教師簽字:
太原理工大學實驗報告二
學院名稱
專業班級
實驗成績
學生姓名
學號
實驗日期
課程名稱 無線網絡 通信技術
實驗題目 m 序列產生及其特性實驗 一、實驗目的和要求:
通過本實驗掌握 m 序列的產生方法、特性及應用。
二、實驗內容: 1、按照課本 P182 圖 5-5,設計 4 階 m 序列產生方法。并編寫 MATLAB 程序,要求輸出周期為 15 的 m 序列“***” 2、編寫程序驗證 m 序列的相關性質,如平衡特性,游程分布特性,延位相加特性。要求至少驗證一條性質。
三、主要儀器設備 Win10
位操作系統筆記本電腦及 MATLAB R2009a 四、主要操作方法與實驗步驟: ?1a2a3a4a移位時鐘信號模 模2 相加器序列輸出
圖 2-1階移位寄存器序列生成器 該序列生成器能夠產生周期為 15 的 0,1 二值序列。設初始狀態(a1,a2,a3,a4)=(1,0,0,0),則周期序列輸出為:***。
(1)按照圖 2-1,設計 4 階 m 序列產生方法。
(2)編寫 MATLAB 程序并上機調試,最后要求輸出周期為 15 的 m 序列“***”。
(3)編寫程序驗證 m 序列的平衡特性:
在 m 序列的一周期中,“1”的個數僅比“0”的個數多 1,即“1”的個數為(N+1)/2,“0”的個數為(N-1)/2。(N 為周期)
程序代碼:
clear all;
a4=1;a3=0;a2=0;a1=0;aa=0;bb=0;s=[];for i=1:15
b4=a4;b3=a3;b2=a2;b1=a1;
a1=b2;a2=b3;a3=b4;
a4=xor(b1,b4);
if b1==1
s(i)=b1;
aa=aa+1;
else
s(i)=0;
bb=bb+1;
end end fprintf(“m 序列為:”)for i=1:15
fprintf(“%d”,s(i))end fprintf(“n”)fprintf(“1 的個數為:%dn”,aa)fprintf(“0 的個數為:%dn”,bb)五、實驗結果與分析
首先設置四個初始的狀態值,再通過四個臨時變量進行移位運算,將運算后結果保存在數組中,并在輸出數組結果的同時統計序列中 1 和 0 的個數,最后輸出統計結果,從而驗證了 m 序列的平衡特性。
六、討論、心得 在寫這個實驗之前,花費了一些時間來研究 MATLAB 的語法,在編寫程序的過程中,雖然思路很明確,但也遇到了一些困難,對有些語法的理解不是明確,通過自己在網上查閱資料,解決了問題,經過不斷的調試,達到了預期的輸出結果,完成了題目的要求。通過這個程序的編寫,感覺 MATLAB 和 C 語言在輸出方面有些許的類似。
七、輔導教師點評:
教師簽字:
太原理工大學實驗報告三
學院名稱
專業班級
實驗成績
學生姓名
學號
實驗日期
課程名稱 無線網絡 通信技術
實驗題目 信道編碼 一、實驗目的和要求:
1、學習并理解信道編碼的目的、要求等基本概念 2.學會使用 MATLAB 實現奇偶監督碼的檢錯模擬與分析 二、實驗內容: 1、輸入任意行任意列的一個二進制序列,也即發送碼組,再加上 1 位監督位,在接收端使用奇偶監督碼中的偶數監督碼進行檢錯。
2、若發送碼組為 1100111,要求加上 1 位監督位,在接收端使用奇偶監督碼中的偶數監督碼進行檢錯。
三、主要儀器設備 Win10
位操作系統筆記本電腦及 MATLAB R2009a 四、主要操作方法與實驗步驟: 程序代碼:
1、輸入任意行任意列的一個二進制序列,也即發送碼組,再加上 1 位監督位,在接收端使用奇偶監督碼中的偶數監督碼進行檢錯。
clear all;m=input(“請輸入行數:”);
n=input(“請輸入列數:”);
s=randint(m,n);s for i=1:m
num=0;
for j=1:n
if s(i,j)==1
num=num+1;
end
if rem(num,2)==0
s(i,n+1)=0;
else
s(i,n+1)=1;
end
end end fprintf(“偶數監督碼:n”)s 2、若發送碼組為 1100111,要求加上 1 位監督位,在接收端使用奇偶監督碼中的偶數監督碼進行檢錯。
clear all;s=[1 1 0 0 1 1 1];fprintf(“發送碼組為:”)num=0;s for i=1:7
if s(i)==1
num=num+1;
end end a=rem(num,2);if a==0
s(8)=0;else
s(8)=1;end fprintf(“偶數校驗:”)s
五、實驗結果與分析 1.2.
六、討論、心得 有了實驗二的基礎之后,對于實驗三來說就簡單的很多,感覺 MATLAB 的函數用起來很方便,仔細體會并理解了偶校驗的實質和精髓。
七 七.輔導教師點評:
教師簽字:
太原理工大學實驗報告四
學院名稱
專業班級
實驗成績
學生姓名
學號
實驗日期
課程名稱 無線網絡通信技術
實驗題目 基于 Simulink 的通信系統建模與仿真 一、實驗目的和要求:
1、通過利用 matlab simulink,熟悉 matlab simulink 仿真工具。
2、通過實驗更好地掌握課本相關知識,熟悉 2ASK 的調制與解調。
二、實驗內容:
使用 MATLAB 中的 Simulink 工具箱搭建 ASK 調制及解調的框圖(使用模擬相乘法及相干解調法)三、主要儀器設備:
Win10
位操作系統筆記本電腦,及軟件 MATLAB R2009a 四、主要操作方法與實驗步驟:
(一)首先進入 matlab,在命令窗口輸入 simulink,進入 simulink 界面。
如下圖:
(二)單擊此窗口中的 File 菜單中的選項 New 中的 Model 命令,出現如下窗口:
(三)使用 Simulink 中的工具,畫出如下圖所示的 ASK 調制及解調的框圖。
(四)把上述框圖畫好后,進行保存,然后單擊 simulation(仿真)菜單中的 start 開始仿真。再雙擊元件 scope(示波器)查看信源波形及解調信號波形。
五、實驗結果與分析
ASK 模擬相乘法調制相干解調波形如下圖所示(上:信源波形 下:解調信號波形)
六、討論、心得 這個實驗的實驗指導書把實驗過程寫的很詳細,按照指導書的步驟就可以完成實驗,有一些細節的地方需要注意,通過這個實驗,我熟悉了 matlab simulink 仿真工具并且更好的理解掌握了課本相關知識,更加熟悉了 2ASK 的調制與解調。
七 七.輔導教師點評:
教師簽字: