Matlab基础语法

内容概述

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()

  1. fprintf()
fprintf('a = %g\n', a)  % 可以控制输出格式
  1. disp()
disp('a')  % 输出字符'a'
disp(a)    % 输出变量 a
disp(['apple', ' ', 'banana', ' ', 'pig'])   % 输出字符串,中间带空格,也可以同时输出多个变量

选择判断

总结:缩进代替花括号,末尾end表结束

  1. if else 判断正负
if (x>0)
	disp('x>0');
elseif x<0
	disp('x<0')
else
	disp('x=0')
end
  1. 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)

  1. 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/506*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

总结

先写这些吧,后面有新的东西再更新。新的一年加油,武汉加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值