这个实验用到matlab,其实大部分同学都没有用过。而且这个东西比较难直接上手写。作为参加数学建模自然会一点。写个这个实验还是没什么问题的。
先教一下大家matlab使用:
运行程序有两种方法,一种是文件式的,一种是命令行式的,今天这次,我先使用命令行式的,以后使用文件式的!!!
第一个事情:变量!!!!
先学会声明变量,才是重头戏,在matlab中没有变量声明语句,当使用一个名字的时候,matlab会搜索这个名字,当没有这个名字的时候,默认自动生成,比如:
在上图中,语句1和2是等效的。都是,给变量赋值为 Chuckie(同时注意,使用的是单引号,双引号不可以哦,至于双引号的用途,以后讲)(同时右边工作区,可能你的在左边,多了一个变量,叫做name,值是Chuckie) ,但是,细心的你可能会发现,语句1执行后,下面显示了结果,语句2执行后,却什么也没显示。
这是因为:::如果语句后面不加分号(;),matlab会以交互式来执行程序,所以每执行一步,都会输出,而类似与语句2,我们有了分号,matlab会执行这个语句,并且会继续执行,除非我们打印结果,否则不会显示到屏幕上。
同样,我们也可以直接给命名为数字,而不是字符。如下图:
第二个事情:删除变量!!!
现在已经有变量了,我们如何去删除变量呢?
使用 clear 关键字(或者说内置函数,只要大家能理解就行)。
比如接着上面的加法,如果我仅仅想删除num1 这个变量,我使用这句话:
如果我们直接使用 clear ,那么所有的变量将会全部删除,如下图:
第三个事情:清屏!!!
现在屏幕里东西确实太多了,看着碍眼,一句话,全部就能清除:clc
没有额外的参数,就是三个字幕,clc,请大家注意区分clear和clc的区别,一不小心弄错了,就会把变量全部删除了,大家千万小心!!!!!
clear: 删除变量。
clc: 清除屏幕的内容,但是不会清除已经存在的变量。
第四个事情:查看我们现在拥有的变量!!!
who 、whos
上面两个命令,可以查看当前我们有的所有变量,比如:
(如果我们在一行中以 ; 分割,那么每个单独语句会被单独执行)
上面的栗子中,我们可以清楚地看到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)');
```
这个图比较难画。函数比较复杂,不过也还好。
今天就写这么多。点赞加关注,下次见。