信号与系统实验---江西中医药大学

本文介绍了MATLAB的基础使用,包括命令行式运行程序、变量声明(无需预声明)、删除变量用clear、清屏用clc、查看变量用who和whos。此外,还展示了如何绘制不同波形图,如2cos(3t+π/4),(2-e^-t)u(t)和[1+cos(πt)][u(t)-u(t-2)]。最后,讲解了如何处理复信号,画出其实部、虚部、模和辐角的图形。
摘要由CSDN通过智能技术生成

这个实验用到matlab,其实大部分同学都没有用过。而且这个东西比较难直接上手写。作为参加数学建模自然会一点。写个这个实验还是没什么问题的。

先教一下大家matlab使用:

运行程序有两种方法,一种是文件式的,一种是命令行式的,今天这次,我先使用命令行式的,以后使用文件式的!!!

第一个事情:变量!!!!

先学会声明变量,才是重头戏,在matlab中没有变量声明语句,当使用一个名字的时候,matlab会搜索这个名字,当没有这个名字的时候,默认自动生成,比如:

eeb1ae1f34b84ac6a7f55286f747bcd7.png

 

在上图中,语句1和2是等效的。都是,给变量赋值为 Chuckie(同时注意,使用的是单引号,双引号不可以哦,至于双引号的用途,以后讲)(同时右边工作区,可能你的在左边,多了一个变量,叫做name,值是Chuckie) ,但是,细心的你可能会发现,语句1执行后,下面显示了结果,语句2执行后,却什么也没显示。

这是因为:::如果语句后面不加分号(;),matlab会以交互式来执行程序,所以每执行一步,都会输出,而类似与语句2,我们有了分号,matlab会执行这个语句,并且会继续执行,除非我们打印结果,否则不会显示到屏幕上。

同样,我们也可以直接给命名为数字,而不是字符。如下图:

0885f8261a4f4191b9b794d30b32ea15.png

 

第二个事情:删除变量!!!

现在已经有变量了,我们如何去删除变量呢?

使用 clear 关键字(或者说内置函数,只要大家能理解就行)。

比如接着上面的加法,如果我仅仅想删除num1 这个变量,我使用这句话:

1c0529151cdb4700b21391f7d9cd1bdb.png

如果我们直接使用 clear ,那么所有的变量将会全部删除,如下图:

 

79fb11d25003415a94657f0f068a12da.png 

第三个事情:清屏!!!

现在屏幕里东西确实太多了,看着碍眼,一句话,全部就能清除:clc

没有额外的参数,就是三个字幕,clc,请大家注意区分clear和clc的区别,一不小心弄错了,就会把变量全部删除了,大家千万小心!!!!!

clear: 删除变量。

clc: 清除屏幕的内容,但是不会清除已经存在的变量。

第四个事情:查看我们现在拥有的变量!!!

who 、whos

 

上面两个命令,可以查看当前我们有的所有变量,比如:

1baf6bbf30274563938c1c44e25976da.png

(如果我们在一行中以 ; 分割,那么每个单独语句会被单独执行)

上面的栗子中,我们可以清楚地看到who 和 whos 的区别,who这个命令仅仅是列出变量的名字,而whos这个命令,显示的信息更加的全面,包括数据的大小(由于matlab默认用二维数组存放,所以对于数字,就是一行一列的数组,就是单个的值),类型,占了多少空间等数据。

最后一件事情:自己动手时间到了!!!

问题是:大家现在都会定义变量了,那么,我们可不可以变量之间进行强制类型转换呢?

大家自己尝试以下代码:

baseNum = 123.456;
toUint8 = uint8(baseNum);
toUint32 = uint32(baseNum);%这个是注释的符号%
whos;


大家也可以扩展一下,同时还有,int8 - 64,uint8-64,uint是无符号整型,是非负的。

反正大家多写写。
下面介绍实验:

 

(a) 2cos(3t + π/4)

```matlab

t = linspace(-10, 10, 1000);

x = 2*cos(3*t+pi/4);

plot(t, x);

title('Waveform of 2cos(3t+π/4)');

xlabel('t');

ylabel('x(t)');

```

(b) (2 - e^-t)u(t)

```matlab

t = linspace(-5, 5, 1000);

u = @(t) t>=0;

x = (2-exp(-t)).*u(t);

plot(t, x);

title('Waveform of (2-e^-t)u(t)');

xlabel('t');

ylabel('x(t)');

```

(c) [1+cos(πt)][u(t)-u(t-2)]

```matlab

t = linspace(-5, 5, 1000);

u = @(t) t>=0;

x = (1+cos(pi*t)).*(u(t)-u(t-2));

plot(t, x);

title('Waveform of [1+cos(πt)][u(t)-u(t-2)]');

xlabel('t');

ylabel('x(t)');

```

(2)利用 Matlab 命令画出复信号 f(t) = 2e^(jt+π/4) 的实部、虚部、模和辐角。

```matlab

t = linspace(-5, 5, 1000);

f = 2*exp(1j*(t+pi/4));

real_part = real(f);

imag_part = imag(f);

magnitude = abs(f);

phase_angle = angle(f);



subplot(2, 2, 1);

plot(t, real_part);

title('Real Part of f(t)');

xlabel('t');

ylabel('Re(f(t))');



subplot(2, 2, 2);

plot(t, imag_part);

title('Imaginary Part of f(t)');

xlabel('t');

ylabel('Im(f(t))');



subplot(2, 2, 3);

plot(t, magnitude);

title('Magnitude of f(t)');

xlabel('t');

ylabel('|f(t)|');



subplot(2, 2, 4);

plot(t, phase_angle);

title('Phase Angle of f(t)');

xlabel('t');

ylabel('∠f(t)');

```

这个图比较难画。函数比较复杂,不过也还好。

今天就写这么多。点赞加关注,下次见。

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值