matlab 入门使用

一、matlab 更改打开时的默认路径

参考网址:https://www.cnblogs.com/mat-wu/p/6135555.html

 二、matlab 预定义的特殊变量

pi, i, j, clock, date都是matlab预定义的特殊变量,命名的时候注意不要重名。

 三、matlab 简单使用demo

在Command Window 输入命令 clc 清空Command Window;  clear 清空 Workspace; filename  直接运行 .m文件。

matlab 代码中 % 后是单行注释,添加注释快捷键是 Ctrl + R ;取消注释快捷键是 Ctrl + T

demo1.m

% C 语言中,变量类型和变量在使用之前必须强制声明。这种语言叫强类型语言。
% MATLAB 是弱类型语言,直接赋值就可以创建变量,变量类型取决于创建时的类型。

var = 40*2i; % matlab 中i、j用来表示虚数,用 2i 这种形式提高速度和鲁棒性
var2 = var/5;
array = [1,2,3,4]; % 数组中的元素可以用空格分隔,也可以用逗号分隔
x = 5;
y = 10;

% first:incr:last  克隆运算符,incr=1时可省略
arr1 = 1:2:10;
arr2 = 1:1:10;
arr3 = 1:10;

% 转置运算符
g = 1:4; 
h = [g' g'];

% 用input初始化变量
my_val = input('Enter an input value:');
my_val2 = input('Enter an input value:','s'); %input('descript:','s')输入的数据就被当字符串

% Conmmand Window 命令:输出显示格式 format short(默认),format bank(无科学记数法)
aa = 4565.13246;
% fprintf()  和c语言中print用法一样。缺点:只能显示复数的实部,所以有虚数时要用disp()
fprintf('The value of pi is %6.2f \n',pi);
% disp()  num2ster()   int2str
str = ['the value of pi='  num2str(pi)];
disp(str);

四、matlab plot()的基础使用

有多个plot()时,后面的图像会覆盖前面的图像。

demo2.m

% plot() 的使用方法
x=0:1:10;
y=x.^2-10*x+15;
% plot(x,y);
% 曲线为红色的虚线,重要的数值用蓝色的小圆圈表示
% plot(x,y,'r--',x,y,'bo');
title ('Plot of y=x.^2-10*x+15');
xlabel ('x');
ylabel ('y');
grid on; % grid off 去除网格线

% 联合绘图
x1 = 0:pi/100:2*pi;
y1 = sin(2*x1);
y2 = 2*cos(2*x1);
plot (x1,y1,x1,y2);
title(' Plot of f(x)=sin(2x) and its derivative');
xlabel('x');
ylabel('y');
% legend 制作图例
legend('f(x)','d/dx f(x)');
grid on;
% 对数尺度
semilogx(x1,y1)

四个图像分别是 plot(x,y);  plot(x,y,'r--',x,y,'bo');   plot (x1,y1,x1,y2);   semilogx(x1,y1)  的图像。

五、matlab 应用的两个小例子

example1:读取一个华氏温度的输入,输出为开尔文温度、example2:负载的最大输出功率。

demo3.m

% example1:读取一个华氏温度的输入,输出为开尔文温度
var = input('输入华氏温度:');
f = 5/9 * (var -32) + 273.15;
fprintf('转换后的开尔文温度为  %6.2f \n ',f);

% example2:负载的最大输出功率
% 注意在本例中,用的是数组运算符 .*   .^和   ./
% 这些运算符将会使数组 amps 和 pl 按元素一一对应计算.
V = 120;
Rs = 50;
Rl = 1:1:100;
I = V ./ ( Rs + Rl); % ./ 
PL = I.^2 .* Rl; % .^  .* 都要带 .
plot(Rl,PL);
grid on;

输出结果:

 六、matlab常用语法(if、figure、hold on、极坐标、while、for循环、全局变量)

 demo4.m

% *************************** if else *******************************
% if  else之间是第一个block; else  end之间是第二个block
% 或者if  end之间是一个block,和缩进无关,缩进只是为了方便阅读。
% a = 2;
% disp('I am if statement:')
% if a==1 
%     fprintf('a is 1 \n');
%     fprintf('I am a. \n');
% else
%     fprintf('a is not 1 \n');
%     fprintf('I am not a. \n');
% end

% ***************************** figure *****************************
% x = 0:10;
% y = x.^2 + 5*x + 6;
% figure(1); % 创建多个图像
% plot(x,y);

% x1 = 0:pi/100:2*pi;
% y1 = sin(2*x1);
% figure(2);% 创建多个图像
% plot(x1,y1);

% **********************************************************
% hold on 所有的新的图象都会叠加在原来存在的图象。
% hold off 命令可恢复默认情况,用新的图象来替代原来的图象。
% x1 = 0:pi/100:2*pi;
% y1 = sin(x1);
% y2 = cos(x1);
% hold off;
% plot(x1,y1,'r');
% hold on;
% plot(x1,y2,'k--');
% hold off;
% ******************************* 极坐标 ***************************
% 极坐标
g = 0.5;
theta = 0:pi/20:2*pi;
gain = 2*g*(1+cos(theta));
polar (theta,gain,'r-');
% ****************************** while ****************************
% while   end 之间是block
b = 1;
while(b <= 5)
    disp(b);
    b = b+1;
end
% **************************** for ******************************
% for   end 之间是block
%  for 循环算法比向量算法慢
for c = 1:2:10  % for c = [1,5,7,9]
   fprintf('c^2 is %d \n',c^2);
end
disp('************************向量化************************')
% 用向量算法代替循环的算法的过程称之为向量化(vectorization)
% 向量执行的速度快,缺点是需要很大的内存,但仍要比 for 循环好的多
cc = 1:2:10;
ccc = cc.^2;
fprintf('ccc is %d \n',ccc);
% **************************** 全局变量 ******************************
% 可以用global声明全局变量。
% 为了方便,应该在函数开头就声明全局变量。 
% 全局变量适用大规模数据的传输
global var1 var2 var3 ;
 var1 = 1;
 var2 = 2;
 var3 = 3;

if 语句输出结果:

 

figure 语句输出结果:

 

hold on、hold off 语句输出结果:

极坐标 语句输出结果:

 while 语句输出结果:

for 循环语句输出结果:

 

七、matlab 自定义函数

demo5_myFunction.m (自定义函数)

% 在这个文件里自定义函数,函数名必须和文件名一致
% 函数脚本不需要运行,只要保存即可
% function result = filename(params)  //这里的函数名字必须和文件名一致
% function block

function distance = demo5_myFunction (x1, y1, x2, y2)
%DIST2 Calculate the distance between two point
% Function DIST2 calculates the distance between
% two points (x1, y1) and (x2,y2) in a cartesian
% coordinate system.
%
% Calling sequence:
% res = dist2(x1, y1, x2, y2)
%
% Define variables:
% x1  --x-position of point 1
% y1  --y-position of point 1
% x2  --x-position of point 2
% y2  --y-position of point 2
% distance --Distance between points
%
% Record of revisions:
%  Date Pragrammer  Description of change
%  ========  ========== ================
%  12/15/98 S.J.Chapman Original code
%
% Calculate distance.

% 函数体内容
distance = sqrt((x2-x1).^2 + (y2-y1).^2);

demo5_myFunction_useFunction.m(调用自定义函数)

% 在这个文件调用自定义函数
%  Script file: test_dist2.m
%
%  Purpose:
%  This program test2 function dist2.
%
%  Record of revisions:
%  Date Pragrammer  Description of change
%  ========  ========== ================
%  12/15/98 S.J.Chapman Original code
%
%  Define variables:
%  ax  --x-position of point a
%  ay  --y-position of point a
%  bx --x-position of point b
%  by --x-position of point b
%
%  Get input data.
disp('Calculate the distance between two points:');
ax = input ('Enter x value of point a:');
ay = input ('Enter y value of point a:');
bx = input ('Enter x value of point b:');
by = input ('Enter y value of point b:');

%  Evaluate function
% 调用自定义函数  result = 自定义函数文件名(params)
result = demo5_myFunction (ax, ay, bx, by); % 调用自定义只有这一句
%  Write out result.
fprintf('The distance between points a and b is %f \n', result);

运行结果:

自定义函数2 :

demo5_calc2.m

% 自定义函数 example2
% 有多个输出,写在[]中;输出只有一个时[]可以省略
% 函数结尾的result可以写,但没必要(运行到最后一行函数自然停止)
% 自定义函数接受不固定个输入参数,请搜索 “选择性参数、inputParser”
function [y1,y2] = demo5_calc2(x1,x2)
y1 = x1^2;
y2 = x2^2;

disp(['max(x1,x2):',num2str(max(x1,x2))]);

% ******************************************
% max()只能被同一文件中的其它函数调用,是子函数
% 私有函数有 private 声明的子函数,它们只能被父目录中的函数访问
% 子函数和私有函数主要用于限制 MATLAB 函数的访问
function a = max(m,n)

if(m<n)
    a = n;
else if(m > n)
     a = m;
    end;
end;

demo5_calc2_useFunction.m 

% 使用自定义函数 example2
x1 = input('input x1:');
x2 = input('input x2:');
% 调用自定义函数格式就是:
%   自定义函数文件中第一行代码去掉 function 剩下的部分
%       function [y1,y2] = demo5_calc2(x1,x2)
[y1,y2] = demo5_calc2(x1,x2);
disp(['y1 is ', num2str(y1)]);
disp(['y2 is ', num2str(y2)]);

运行结果:

 

posted @ 2022-03-01 17:32  sunshine233  阅读(687)  评论(0编辑  收藏  举报