在MATLAB中,可以通过创建一个以m为文件扩展名的脚本文件来编写程序。下面是一个简单的例子,展示了如何编写一个名为roadm的MATLAB程序:
打开MATLAB编辑器或任何文本编辑器。
创建一个新文件,并将其命名为roadm,确保文件扩展名为m。
在roadm文件中输入以下MATLAB代码:
% roadm - 一个简单的MATLAB程序示例% 清空命令窗口和工作空间
clc;
clear;
% 输入用户姓名
name = input('请输入您的姓名: ', 's');
% 输出欢迎消息
fprintf('欢迎来到MATLAB的世界, %s!\n', name);
% 计算两个数的和
a = input('请输入第一个数: ');
b = input('请输入第二个数: ');
sum = a + b;
% 输出计算结果
fprintf('两个数的和是: %d\n', sum);
以上代码演示了一个简单的MATLAB程序,其中包含了输入、输出和简单的计算 *** 作。程序首先清空了命令窗口和工作空间,然后通过input函数获取用户输入的姓名和两个数,通过fprintf函数输出欢迎消息和计算结果。
注意:MATLAB中的注释使用%符号,用于注释掉代码中的一行或多行。注释可以帮助解释代码的作用和功能。
保存roadm文件后,您可以在MATLAB命令窗口中运行这个程序,通过输入road命令即可执行。程序会提示您输入姓名和两个数,然后输出欢迎消息和计算结果。您可以根据自己的需求和逻辑在roadm文件中编写更复杂的MATLAB程序。
第三维是指r、g、b,其实就是一个数组把R通道的图像数据,G的图像数据、B的图像数据给放在一起,就相当于你那三张大小相同叠在一起,叠的过程中不就多了一维吗?分割的时候,就是对这个三维数组的空间维分割,即对R、G、B通道矩阵的行和列就取值范围划分就行了,不知是否讲明白了?
把值付给四个变量
wp=2pi5000;ws=2pi12000;Rp=2;As=30;
1 buttord
(1)[N,wc]=buttord(wp,ws,αp,αs)
用于计算巴特沃斯数字滤波器的阶数N和3dB截止频率wc。
调用参数wp,ws分别为数字滤波器的通带、阻带截止频率的归一化值,要求:0≤wp≤1,0≤ws≤1。1表示数字频率pi。
αp,αs分别为通带最大衰减和组带最小衰减(dB)。
当ws≤wp时,为高通滤波器;
当wp和ws为二元矢量时,为带通或带阻滤波器,这时wc也是二元向量。
N,wc作为butter函数的调用参数。
(2)[N,Ωc]=buttord(Ωp,Ωs,αp,αs,‘s’)
用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率Ωc。
Ωp,Ωs,Ωc均为实际模拟角频率。
说明:buttord函数使用阻带指标计算3dB截止频率,这样阻带会刚好满足要求,而通带会有富余。
2buttap(N)
[z0,p0,k0]=buttap(N)
用于计算N阶巴特沃斯归一化(3dB截止频率Ωc=1)模拟低通原型滤波器系统函数的零、极点和增益因子。
说明:如果要从零、极点模型得到系统函数的分子、分母多项式系数向量ba、aa,可调用
[B,A]=zp2tf(z0,p0,k0)
3butter
(1)[b,a]=butter(N,wc,‘ftype’)
计算N阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a。
调用参数N和wc分别为巴特沃斯数字滤波器的阶数和3dB截止频率的归一化值(关于pi归一化),一般是调用buttord(1)格式计算N和wc。
系数b、a是按照z-1的升幂排列。
(2)[B,A]=butter(N,Ωc,‘ftype’,‘s’)
计算巴特沃斯模拟滤波器系统函数的分子、分母多项式系数向量ba、aa。
调用参数N和Ωc分别为巴特沃斯模拟滤波器的阶数和3dB截止频率(实际角频率),可调用buttord(2)格式计算N和Ωc。
系数B、A按s的正降幂排列。
tfype为滤波器的类型:
◇ftype=high时,高通;Ωc只有1个值。
◇ftype=stop时,带阻阻;此时Ωc=[Ωcl,Ωcu],分别为带阻滤波器的通带3dB下截止频率和上截止频率。
◇ ftype缺省时:
若Ωc只有1个值,则默认为低通;
若Ωc有2个值,则默认为带通;其通带频率区间Ωcl < Ω < Ωcu。
注意:所设计的带通和带阻滤波器系统函数是2N阶。因为带通滤波器相当于N阶低通滤波器与N阶高通滤波器级联。
[N,wc]=buttord(wp,ws,Rp,As,'s');
[B,A]=butter(N,wc,'s');
k=0:511;fk=0:14000/512:14000;wk=2pifk;
Hk=freqs(B,A,wk);
画图,两行两列
subplot(2,2,1);
plot(fk/1000,20log10(abs(Hk)));grid on
坐标轴意义
xlabel('频率(kHz)');ylabel('幅度(dB)')
坐标的取值范围
axis([0,14,-40,5])
判断矩阵一致性检验的Matlab源程序代码
Matlab源程序代码如下:
clc
clear
disp('请输入判断矩阵A')
A=input('A=');
[n,n] = size(A)
%方法1: 算术平均法
Sum_A = sum(A);
SUM_A = repmat(Sum_A,n,1);
Stand_A = A / SUM_A;
Stand_A = A / Sum_A; % 这样也可以的
disp('算术平均法求权重的结果为:');
disp(sum(Stand_A,2)/n)
%方法2: 几何平均法
Prduct_A = prod(A,2);
Prduct_n_A = Prduct_A ^ (1/n);
disp('几何平均法求权重的结果为:');
disp(Prduct_n_A / sum(Prduct_n_A))
%方法3: 特征值法求权重
[V,D] = eig(A);
Max_eig = max(max(D))
[r,c]=find(D == Max_eig , 1);
disp('特征值法求权重的结果为:');
disp( V(:,c) / sum(V(:,c)) )
%计算一致性比例CR
CI = (Max_eig - n)/(n-1);
RI=[0 00001 052 089 112 126 136 141 146 149 152 154 156 158
159];
% 这里n=2时,一定是一致矩阵,所以CI = 0,为了避免分母为0,将这里的第二个元素改为了很接近0的正数
CR=CI/RI(n);
disp('一致性指标CI=');disp(CI);
disp('一致性比例CR=');disp(CR);
if CR<010
disp('因为CR<010,所以该判断矩阵A的一致性可以接受!');
else
disp('注意:CR >=
010,因此该判断矩阵A需要进行修改!');
end
1理解连续系统时域分析方法
2学习利用matlab对连续系统进行时域分析的方法
3掌握单位冲激响应和单位阶跃响应一般求解方法和基本特征,学习利用matlab求此响应的方法。
4掌握单位冲激响应与系统稳定性、因果性之间的关系。
二、实验器材
计算机、MATLAB软件
三、实验原理
对于单输入-单输出系统的输入激励为 f (t),输出响应为y(t),则描述连续LTI系统的数学模型为n阶次的常系数线性微分方程,形式如下
[上传失败(image-82e2d0-1639285196529)] (3-1)
式子中, a i = 0,1,n,和b i =0,1,m均为常数。
由信号与系统的分析理论值,如果描述系统的微分方程、激励和初始状态已知,我们可用经典时域求解法求出其解。但对于高阶系统,手工计算十分的繁琐,甚至很困难,这时可以用matlab工具求解。
Matlab里提供了求(3-1)解用到的函数,常用的是impluse()、step()、lism()、conv()、dsolve()。下面我们分别介绍这几个函数。
1连续时间系统冲激响应和阶跃响应的求解
连续LTI系统的冲激响应和阶跃响应,分别用impluse和step求解。其调用格式为
impluse (b,a) y=impluse(sys,t)
step (b,a) y=step(sys,t)
式中,t表示计算系统响应的抽样点向量,sys是LTI系统模型,它表示 微分方程,差分方程或状态方程 。其调用格式
sys = tf (b,a)
式中,b和a分别是微分方程的右端和左端系数向量。例如
[上传失败(image-63fd93-1639285196529)]
用a=[a3,a2,a1,a0] ; b=[b3,b2,b1,b0] ,sys = tf (b,a) 获得其LTI模型。
例1:已知描述某连续系统的微分方程为
[上传失败(image-954b31-1639285196529)]
试利用matlab绘出该系统的单位冲激响应和单位阶跃响应的时域波形,并根据单位冲激响应判断系统的稳定性和因果性。`1
matlab程序如下
a=[1 1 6];
b=[1];
subplot(2,1,1)
impulse(b,a)
subplot(2,1,2)
step(b,a)
程序运行后,其图形如下3-1所示。
[上传失败(image-8ac458-1639285196530)]
图3-1 系统的冲激响应和阶跃响应图
从图3-1所示的系统的单位冲激响应的时域波形可以看出,当时间t<0时系统的单位冲激响应h(t)=0,所以该系统为因果系统;同时h(t)随着时间的增长而衰减,当t趋于无穷大时时,h(t)趋于零,所以系统也是一个稳定的系统。
2连续时间系统零输入响应的求解
在MATLAB中,initial是求连续系统的零输入响应函数,其调用形式为
initial(sys,x0)
[y,x,t]=initial(sys,x0)
initial函数可计算出连续时间线性系统由于初始状态所引起的响应(故而称零输入响应)。当不带输出变量引用函数时,initial函数在当前图形窗口中直接绘制出系统的零输入响应。
例2:已知描述某连续系统的微分方程为
[上传失败(image-15bccf-1639285196529)]
y(0)=1,y’(0)=2, 用matlab求其零输入响应
程序如下:
a=[1 1 6];
b=[1];
sys=tf(b,a);
sys1=ss(sys); % 转成状态变量表示
x0=[1,2]
initial(sys1,x0)
运行结果如图3-2所示
[上传失败(image-f08768-1639285196530)]
图3-2 系统的零输入响应图
3连续时间系统零状态响应的数值计算----- lism()
求解微分方程零状态响应的数值解。其调用格式主要有两种。
lism(sys,f,t) y=lism(sys,f,t)
其中,f是输入信号在向量t定义的时间点上的采样值,t是输入信号时间范围向量,sys是LTI系统模型
例3: 已知描述某连续系统的微分方程为
[上传失败(image-4a9e83-1639285196529)]
试利用matlab求出该系统当激励信号为[上传失败(image-5ad649-1639285196529)] 时,系统的响应[上传失败(image-348322-1639285196529)] ,并会出其波形。
matlab程序如下
a=[1 2 1];
b=[1 2];
sys=tf(b,a); %定义系统函数对象
p=001; %定义采样时间间隔
t=0:p:5;
f=exp(-2t);
lsim(sys,f,t); %对系统输出信号进行仿真
程序运行后,其图形如图3-3所示。
[上传失败(image-3950ed-1639285196529)]
图3-3 连续系统的响应仿真
4微分方程的符号解的函数dsolve()
在MATLAB中,dsolve()是求解微分方程的符号解的函数,其调用形式为
r=dsolve(‘eq1,eq2,…’,’cond1,cond2,…’,’v’)
或r=dsolve(‘eq1’,eq2’,…,’cond1’,’cond2’,…,’v’)
其中cond1、cond2…是初始条件(如没有给出初始条件,则默认为求通解),v为自变量变量。D表示一阶微分,D2为二阶微分……。函数dsolve把D后的变量当成因变量,默认为这些变量对自变量的求导。
例4:求二阶系统[上传失败(image-9ca77c-1639285196529)] 在初始条件[上传失败(image-ae497b-1639285196529)] 下的零输入响应的解、零状态响应的解及全解
matlab程序如下
yzi=dsolve('D2y+5 Dy+4 y=0','y(0)=0,Dy(0)=1')
yzs=dsolve('D2y+5 Dy+4 y=exp(-3t)','y(0)=0,Dy(0)=0')
y=dsolve('D2y+5 Dy+4 y=exp(-3t)','y(0)=0,Dy(0)=1')
运行结果如下
yzi =
-1/3 exp(-4 t)+1/3exp(-t)
yzs =
1/3 exp(-4 t)+1/6 exp(-t)-1/2 exp(-3t)
y =
1/2 exp(-t)-1/2 exp(-3t)
即 [上传失败(image-8a13eb-1639285196529)]
[上传失败(image-9036d5-1639285196529)]
[上传失败(image-fa7bd7-1639285196529)]
四、实验内容
1验证实验原理中所述的相关程序
2已知描述某连续系统的微分方程为
[上传失败(image-d41f06-1639285196529)]
(1) 试利用matlab绘出该系统的冲激响应和阶跃响应的时域波形,并根据冲激响应判断系统的稳定性。
a=[1,3,2];
b=[1,2];
subplot(2,1,1)
impulse(b,a);
subplot(2,1,2)
step(b,a);
wending
(2) 当激励信号为[上传失败(image-e16660-1639285196529)] 时,系统的零状态响应[上传失败(image-5beb2d-1639285196529)] ,并绘出响应的波形。
a=[1,3,2];
b=[1,2];
sys=tf(b,a)
t=0:001:5;
f=exp(-2t);
lsim(sys,f,t)
3求三阶系统[上传失败(image-a71fa6-1639285196529)] 在初始条件[上传失败(image-40502a-1639285196529)] 下的零输入响应的解、零状态响应的解及全解。
yzi=dsolve('D2y+5Dy+y=0','y(0)=0,Dy(0)=1')
yzs=dsolve('D2y+5 Dy+y=exp(-3 t)','y(0)=0,Dy(0)=0')
y=dsolve('D2y+5 Dy+y=exp(-3 t)','y(0)=0,Dy(0)=1')
五、实验报告要求
1实验内容中详细说明用连续系统时域分析法的步骤与原理。
2写出其对应的matlab程序。
3上机调试程序的方法及实验中的心得体会。
以上就是关于MATLAB如何编写road.m程序全部的内容,包括:MATLAB如何编写road.m程序、用matlab把一张彩色图片切割成4小份,程序怎么写rgb图片是3维数组,第三维是什么啊、matlab一段简单的程序,麻烦注释每一句的意思.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)