Basic
%%
% 获得函数帮助说明
help randi
%%
result=[log(2.7),log2(2),log10(10),exp(1)];
disp(result)
% 2*3:[0,1]间均匀分布矩阵
rand(2,3)
% 3*3:[0,1]间均匀分布矩阵
rand(3)
% randi([min,max],m,n):m*n均匀分布随机数矩阵,含两端
choic=randi([0,2],1,4)
% 复数
2+i*4
%%
% 运算优先级:() > ^ > * / > + -
% 变量使用前无需申明
% 数字默认double 类型
% i,j 指向复数的虚部
i
j
% 无穷大
Inf
% log(0)
eps
% not a number
NaN
pi
% 指向最近一个匿名结果
ans
% 变量优先级:变量>内建函数>子函数
cos='string'
cos(3) %'r'
%%
% 格式化输出,四舍五入式
% format bank:2位小数, short:4位小数,long :15位小数,shortE:short 的科学计数法形式,longE:long的科学计数法形式
% format hex:16进制,rat:分数形式
format bank
a=12/6.5
%%
a=[1,2,3];% 行向量
b=[1;2;3];%列向量
a*b% 矩阵乘法
%%
% matlab 下标都是从1 开始
a=[1 2 3; 4 5 6; 7 8 9 ];
a(3) % 矩阵从左到右按列分组,每组从上到下依次从1开始编号
a([1 2; 3 4]) % 第1 2;3 4个元素构成新的数组
a(:) %按序号的矩阵所有元素列向量
a(2,3)% 数组下标访问
a([1 3],[2 3])% 第1 3行于第 2 3列相交处元素构成新的2*2矩阵
%%
%向量
a=1:10
a=1:2:10
a=linspace(1,10,3)
%%
clc
a=magic(5)
a(1,:) %':'表示该列所有行,或者改行所有列
a(:,1)
a(:,1)=[] %[]表式删除改行或列,矩阵维度发生变化
a(1,:)=[]
%%
% 矩阵拼接
clc
a=randi(3,4)
b=randi(3,4)
c=[a b] %横向拼接a,b行数相同
d=[a;b] %纵向拼接a,b列数相同
%%
clc
a=randi([1,10],3,3)
b=randi([1,10],3,3)
c=2
a+a% + 运算,元素与元素相加
a+c
a-a
a-c
a*b % * 矩阵乘法,.* 对应元素间相乘
a*c
a.*a
a/c % a/b=>a乘以b的逆矩阵,a./b 对应元素相除,c.a=>a./c , a.=>b./a
a/b
a./b
c.a
a.
a^2 % a^2=>a*a , .^ 每个元素做乘方运算
a.^2
a' % 转置
%%
clc
eye(3) % 3*3单位矩阵
zeros(2,3) %2*3 全0阵
ones(2,3) %2*3 全1阵
diag([1:2:10]) %把向量转化为对角矩阵
%%
clc
a=randi([1,10],3,4)
max(a) % 多维矩阵返回每列最大值的行向量,行/列向量返回向量的最大值,
max(max(a))
max(a,[],2) %返回a中每行元素最大值的列向量
min(a) %同上
min(min(a))
min(a,[],2)
sum(a)%同上
sum(sum(a))
sum(a,2)
mean(a)%同上
mean(mean(a))
mean(a,2)
sort(a) %每列排升序
sort(a,2) %每行排升序
sortrows(a) %按第一列大小拍升序,其余列元素同第第一列同步变化
size(a) %m*n
size(a,1) %m
size(a,2) %n
length(a) %列数
find(a==3) % 得到所有3所在的位置序号
Struct Programming
% 结构化编程,
% %%:节标志,可以以节为单位运行。
%%
% rem(a,2)=>q%2,prod(1:n)=>1*2*3*...*n
% randi([min,max],m,n):m*n均匀分布随机数矩阵,含两端
% ';'不输出当前行结果
choic=randi([0,2],1,1);
switch choic
case 0
disp('0');
case 1
disp('1');
case 2
disp('2');
end
for i=1:10
% [0,10]均分101份,含头和尾
x=linspace(0,10,101);
plot(x,sin(x+i));
print(gcf,'-deps',strcat('plot',num2str(i),'.ps'));
end
%%
% 清空输出
clc ;
% 关闭所有子窗口
close all
i=1;
result=0;
while i<=999
result=result+i;
i=i+1;
end
disp("result:"+result)
%%
% a下标从1开始
a=zeros(1,5);
% start:step:end->含头尾[start,end]
for index=1:2:10
a((index+1)/2)=2^index;
end
disp(a)
%%
clc
% 清空数据
clear a
% 开始计时
tic
for i=1:2000
for j=1:2000
a(i,j)=i+j;
end
end
% 结束计时并输出
toc
clear a
tic
% 预分配内存以获得更高的运算速度,之后给变量赋值时不用判断内存是否足够,不够就要从新分配内存
a=zeros(2000,2000);
for i=1:2000
for j=1:2000
a(i,j)=i+j;
end
end
toc
%%
clear
tic
a=[0 -1 4; 9 -14 25 ;-34 49 64 ;1 2 3];
%[列数,行数]
arraySize=size(a);
disp(a)
disp(arraySize)
b=zeros(arraySize);
for i=1:arraySize(1)
for j=1:arraySize(2)
if a(i,j)<0
b(i,j)=0;
else
b(i,j)=a(i,j);
end
end
end
disp(b)
toc
%%
for i=1:10000
% 0~1 均匀分布随机数
num=rand();
if num>=0.999
% num2str:123->'123';'123'+""->"123";"123"+1->"1231"
disp(num2str(num)+" "+i);
% 跳出循环
break;
end
end
%%
% 可一次输入多组数据,同一个函数参数用[]
% acc(12,343,4545,34,3) acc(43,354,555,5,45)
% 结果变量同样数组返回
[a,f]=acc([12 43],[343 354],[4545 555],[34 5],[3 45]);
disp("a:
"+a)
disp("f
"+f)
%%
a=1;
T=2^0.5*pi*a/4;
% 函数句柄,注意'.'运算
% 单行定义,多参数,单一结果,隐式返回
f=@(x)2^0.5*a./2-(a./2)./cos(fix(x./T)*pi./2+pi./4-2^0.5*x./a) ;
x=0:0.005:4*T;
plot(x,f(x))
% 坐标轴参数
title('x-y');
ylim([0,1])
ylabel('y');
xlabel('x');
%%
% 输入数字,数组,函数名rand()
x=input('fuck me:
');
num2str(x)
% 输入字符向量
x=input('fuck me:
','s');
isempty(x)
%%
f2c()
% acc函数名要和文件名相同
function [a,f] = acc(v_0,v_1,t_0,t_1,m)
% 使用.运算,满足多组数据输入的运算
% 返回的参数在函数声明时只是申明,在必要时要定义或单独分配内存
a=(v_1-v_0)./(t_1-t_0);
f=m.*a;
% 以[a,f]形式返回结果,如果一次输入多组数据,单个变量本身就是一个数组。
end
function [outputArg1,outputArg2] = funDefVar(name,age,gender)
%获得函数基础信息
outputarg1=name;
outputarg2=age;
% 当前.m文件名
mfilename
% 函数输入参数数目
nargin
% 函数输出参数数目
nargout
end
function [ ] = f2c()
while 1
f=input('f:
');
if isempty(f)
break
end
c=(f-32)*5/9;
disp("c:"+num2str(c))
end
end