第一篇: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.用户单击“暂停”按钮
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 的调制与解调。
七 七.辅导教师点评:
教师签字: