2024Matlab小白入门详细教程_matlab教程-CSDN博客
目前基于以上链接继续查漏补缺(在会Python编程以及用过几次MATLAB之后),在MATLAB中整理出自己未掌握的内容如下:
%%
% 16.循环结构
% (1)for循环
% for 变量=表达式
% 执行语句
% end
% 表达式一般为:m,s,l s默认为1,表示间隔,可以为负数;m表示开始;l表示结束。
% 也可以是向量
for a = 1: -0.1: 0
disp(a)
end
for a = [1 2 3 4 5 6]
disp(a)
end
% (2)while循环
% while 表达式
% 语句组
% end
i=0;
sum=0;
while(i<=100)
sum=sum+i;
i=i+1;
end
fprintf('累加和为: %d \n', sum); %遍历1-100,并求和
% (3)嵌套循环
% for m = 1:j
% for n = 1:k
% 语句;
% end
% end
for i = 2:100
for j = 2:100
if(~mod(i,j))
break; % 可以被除尽,就不是质数
end
end
if(j > (i/j))
fprintf('%d 是质数\n', i); %求1-100内所有质数
end
end
% (4)break,continue语句
% break语句。终止循环语句,并将执行转移到循环之后的语句。
% continue语句。跳过当前循环的其余部分,直接执行下次判断,进入下次循环。
%%
% 17.函数
% (1)普通函数
% function 输出形参表 = 函数名(输入形参表)
% % 写一点关于函数的摘要
% % 写一点参数说明
% 函数体语句
% end
function y= f(x)
% x为一个整数
if x>0
y=2*x;
elseif x==0
y=0;
else
y=x*x;
end
disp(y)
end %新建"函数"并保存,然后运行y=f(2)
y=f(3)
% (2)匿名函数
% f = @(变量列表)表达式
close all;
clc;
b=@(x)(sin(x)+cos(x)); %创建关于x的匿名函数
c=b(pi) %带入pi
d=@(x,y)(sin(x)+cos(y)) %创建x和y的匿名函数
e=d(pi/2,pi/2) %带入pi值测试
% (3)嵌套函数(不建议使用)
% function x = A(p1, p2)
% ...
% function y = B(p3)
% ...
% end
% ...
% end
function [x1,x2] = qiantao2(a,b,c)
%定义函数qiantao2计算一元二次函数
d=0; %初始化
function disc
d = sqrt(b^2 - 4*a*c); %计算d
end
disc; %输出d
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end %新建"函数"并保存,然后运行qiantao2(1,2,3)
qiantao2(1,2,3)
% (4)全局变量
% 函数中申明变量为全局变量,可由多个函数共享。
% 命令行中申明全局变量,工作区可访问该变量。
% 全局申明必须在函数实际使用变量前发生。
% 创建脚本输入代码:
function avg = average(nums)
global TOTAL
avg = sum(nums)/TOTAL;
end %新建"函数"并保存,然后运行
global TOTAL;
TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)
%%
% 18.数据可视化
% (1)绘图基本命令
% 1)plot()命令打开基本图窗
x = [0:3:60];
y = x;
plot(x, y)
% 2)xlabel、.ylabel、title、grid on命令
% xlabel和ylabel命令沿x轴和y轴生成标签
% title命令可以图形上放置标题
% grid on命令可以将网格线放在图形上
% axis equal命令可以生成相同比例和轴上的空格的绘图
% axis square生成正方形图
x = [0:0.01:10];
y = cos(x);
plot(x, y), xlabel('x'), ylabel('cos(x)'), title('cos(x) Graph'),
grid on, axis equal
% 3)plot(x1,y1,x2,y2)
% 同一个图形绘制多个函数,只需在plot()命令中传入多个x,y即可。
x = [0 : 0.01: 10];
y1 = sin(x);
y2 = cos(x);
plot(x, y1, x, y2, '.-'), legend('Sin(x)', 'Cos(x)')
% 4)常见颜色代码
% w白,k黑,b蓝,r红,c青,g绿,m品红,y黄
x = [-10 : 0.01: 10];
y = 3*x.^5 + 2 * x.^3 + 7 * x.^2 + 2 * x + 9;
g = 5 * x.^3 + 9 * x + 2;
plot(x, y, 'r', x, g, 'g')
% 5)axis()设置轴刻度
% axis ( [xmin xmax ymin ymax] )
x = [0 : 0.01: 10];
y = exp(-x).* sin(2*x + 3);
plot(x, y), axis([0 10 -0.6 0.6])
% 6)subplot()生成子图
% subplot(x,y,z) %共x行y列现在第z个
x = [0:0.01:5];
y = exp(-1.5*x).*sin(10*x);
subplot(1,2,2)
plot(x,y), xlabel('x'),ylabel('exp(–1.5x)*sin(10x)'),axis([0 5 -1 1])
y = exp(-2*x).*sin(10*x);
subplot(1,2,1)
plot(x,y),xlabel('x'),ylabel('exp(–2x)*sin(10x)'),axis([0 5 -1 1])
% (2)散点图
% scatter()绘制
x=[75;78;51;82;77;88;41;78;78;61;71;74;62;81;75;64;80;72;51;80;56;73];
y1=[208;146;168;149;208;102;130;155;163;154;145;147;143;161;145;120;153;158;123;163;177;148];
scatter(x,y1) %直接绘制,默认颜色
scatter(x,y1,'g') %填充颜色绘制为绿色
c = linspace(1,10,length(x)); %创建向量
scatter(x,y1,[],c) %彩色绘制
sz = 25;
c = linspace(1,10,length(x));
scatter(x,y1,sz,c,'filled') %彩色绘制并填充
% (3)条形图bar()
x = [1:4]; %x个数一定要与y个数对应
y = [94,54,65,87];
bar(x,y) %使用bar函数
xlabel('科目')
ylabel('成绩')
title('条形图')
% (4)概率分析图
% 1)正整数的频率表
% tabulate(X) %X为正整数构成的向量,返回3列:
% 第1列中包含X的值,第2列为这些值的个数,第3列为这些值的频率
A=[1 2 2 5 6 38]
tabulate(A)
% 2)经验累积分布函数图形
% cdfplot(X) %作样本X(向量)的累积分布函数图形
% h = cdfplot(X) %h表示曲线的环柄
% [h,stats] = cdfplot(X) %stats表示样本的一些特征
X=normrnd(0,1,50,1) %r = normrnd(mu,sigma,sz1,...,szN) 生成正态随机数数组,其中 mu为均值,sigma为标准差,r = normrnd(mu,sigma,sz1,...,szN) 生成正态随机数数组.
[h,stats]=cdfplot(X)
h
stats %min:样本最小值;max:最大值;mean: 平均值;median:中间值;std: 样本标准差
% 3)最小二乘拟合曲线
% lsline %最小二乘拟合直线
% h = lsline h为直线的句柄
X = [2 3.4 5.6 8 12.3 13.8 16 18.8 19.9]';
plot(X,'*')
lsline
% 4) 绘制正态分布概率图形
% normplot(X) %若X为向量,则显示正态分布概率图形,
% 若X为矩阵,则显示每一列的正态分布概率图形。
X=normrnd(0,1,50,1);
normplot(X)
% 5)样本数据的盒图,类似箱线图
boxplot(X) %产生矩阵X的每一列的盒图和“须”图,“须”是从盒的尾部延伸出来,并表示盒外数据长度的线,
% 如果“须”的外面没有数据,则在“须”的底部有一个点。
% boxplot(X,notch) %当notch=1时,产生一凹盒图,notch=0时产生一矩箱图。
% boxplot(X,notch,'sym') %sym表示图形符号,默认值为“+”。
% boxplot(X,notch,'sym',vert) %当vert=0时,生成水平盒图,
% vert=1时,生成竖直盒图(默认值vert=1)。
% boxplot(X,notch,'sym',vert,whis)%whis定义“须”图的长度,默认值为1.5,
% 若whis=0则boxplot函数通过绘制sym符号图来显示盒外的所有数据值。
x1 =normrnd(5,1,100,1);
x2 =normrnd(6,1,100,1);
x = [x1 x2];
boxplot(x,0,'g+',1,0)
% 其余详情参考csdn文章http://t.csdnimg.cn/YIfRZ
% (5)读取excel画图
%data=xlsread('文件路径')
%x=data(:,2); %第2列的全部
%y=data(1:100,6); %2到100行的第6列
%plot(x,y) ; %绘制曲线
%参考:http://t.csdnimg.cn/1kQ0N
%%
% 19.函数极限求解
% (1)limit(f(x),a) a是要趋向的值,无则默认趋向于0
syms x
limit((x - 3)/(x-1))
limit((x - 3)/(x-1),2)
% (2)左右极限
f = (x - 3)/abs(x-3);
fplot(f,[-1,5]) % fplot(f) 在默认区间 [-5 5](对于 x)绘制由函数 y = f(x) 定义的曲线。
%fplot(f,xinterval) 将在指定区间绘图。将区间指定为 [xmin xmax] 形式的二元素向量
l = limit(f,x,3,'left')
r = limit(f,x,3,'right')
%%
% 20.微分
% (1)diff(f)命令 %f为要求导的函数
% ①申明求导变量:syms=x②定义要求导函数:f③调用diff(f)命令对函数进行求导
syms t
f = 3*t^2 + 2*t^(-2);
diff(f)
% (2)dif(f,n)计算高阶导数 %f为求导函数,n为求导的相应阶数。
syms t
f = 3*t^2 + 2*t^(-2);
diff(f,2)
% (3)10.6寻找曲线的最大值与最小值
% 若要寻找fx)=2x3+3x2-12x+17函数的最大值与最小值,我们可以
% ①用zplot(y,[])绘制出函数最大值与最小值,y是函数,[]是自变量取值区间。
% ②调用dify)命令求导。
% ③solve(g)命令求解导函数,即令导函数为0,即可解出对应的自变量x。
syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; %定义函数
ezplot(y, [-2, 2]) %与fplot同
g = diff(y);
s = solve(g) %求解导函数为0的自变量值
subs(y, 1), subs(y,-2) %求1和-2处的函数值
% (4)dsolve命令求解微分方程
% dsolve('eqn','cond1', 'cond2',…)
dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2') %eqn中导数用D表示
同时补充学习了如下文章:
MATLAB各种概率分布统计分析画图_线性分布图-CSDN博客
matlab(1):使用matlab处理excel数据进行画图_matlab怎么对excel 表格绘图-CSDN博客
以上代码可直接放于MATLAB中运行学习。