内容概述
2020.02.02一更
你好呀!初学Matlab,做一个记录。本文适合有C基础的Matlab小白(我自己)。
力求简短,文章多用代码举例。
知识点:矩阵写法,循环、判断,输入输出,函数,画图(二维,三维,曲面,动态)。
运算符号
乘方(.^),不等于(~=),数学乘法(.*)
矩阵
生成一个2x3矩阵:
// 写法1:
x = [1 2 3; 4 5 6]
// 写法2:
x = [1 2 3;
4 5 6]
输入输出
总结:常见fprintf(), disp()
- fprintf()
fprintf('a = %g\n', a) % 可以控制输出格式
- disp()
disp('a') % 输出字符'a'
disp(a) % 输出变量 a
disp(['apple', ' ', 'banana', ' ', 'pig']) % 输出字符串,中间带空格,也可以同时输出多个变量
选择判断
总结:缩进代替花括号,末尾end表结束
- if else 判断正负
if (x>0)
disp('x>0');
elseif x<0
disp('x<0')
else
disp('x=0')
end
- while循环,求最大公约数(辗转相除法)
a = input('Please enter a\n')
b = input('Please enter b\n')
r = mod(a,b)
while r ~= 0
a = b
b = r
r = mod(a,b)
end
disp(b)
- for循环
//基本用法
for i = 5 : -1 : 5 % 起点,步长,终点
disp(i)
end
//遍历向量
v = [1 2 3 6 5 4]
for i = v
disp(i)
end
取模
x = mod(10,3) % x=1
函数function
function名字与保存文件名保持一致,函数声明原型即使用原型,参数一一对应,格式function [output parameter] = name[input parameter]
//求约数个数
function result = conut_factors(n)
count = 0;
for i = 1 : n
if mod(n,i) == 0
count = count + 1
end
end
result = count
end
保存后,脚本直接调用即可。
//是否质数
function result = is_prime(n)
count = count_factors(n);
if count == 2
result = 1
else
result = 0
end
end
画图
二维图形plot(x,y),三维图形plot3(x,y,z),分割画面画图subplot(m,n,x)
Matlab会先找点,然后plot(直线)连接起来
二维
x = [1 2 3];
y = [4 5 6];
% grid on(off); % 打开(关闭)背景网格
% title('test'); % 设置标题
% xlabel('x'), ylabel('y'); % 设置x,y标题
axis([-5, 5, -5, 5]); % x起点,终点,y起点,终点
axis equal; % x,y间距相等
plot(x,y);
hold on; % 防止再次调用plot函数覆盖图像
x = -4 : 0.1 : 4;
y1 = cos(x);
y2 = cos(2 .* x);
y4 = cos(4 .* x);
subplot(2,2,1);
plot(x,y1);
title('y=cos(x)');
subplot(2,2,2);
plot(x,y2);
title('y=cos(2x)');
subplot(2,2,[3,4]; % 占3,4两位
plot(x,y3);
title('y=cos(4x)');
三维
theta = 0 : pi/50 : 6*pi;
x = cos(theta);
y = sin(theta);
z = 0 : 300;
plot3(x,y,z);
曲面surf(x,y,z)
x = -3 : 3;
y = -3 : 3;
[X,Y] = meshgrid(x,y); % [X,Y]将形成平面的一个矩阵
Z = X .^ 2 + Y .^ 2;
surf(X,Y,Z);
动态画图
X = -2*pi : pi/20 : 2*pi;
Y = sin(X);
h = plot(X,Y);
while true
X = X + 0.1;
Y = sin(X);
set(h, 'XData', X, 'YData', Y); % set(句柄,属性名1, 属性值1, 属性名2, 属性值2...)
drawnow;
end
总结
先写这些吧,后面有新的东西再更新。新的一年加油,武汉加油!