matlab学习教程,数模比赛入门速成

学习笔记matlab

matlab 基本变量

变量说明
ans预设变量名
eps正极小值
piΠ值
inf无限大值
NaN无法定义的值,例如1/0
i或j虚数单位
nargin函数输入参数个数
nargout函数输出参数个数
realmax最大正实数
realmin最小正实数
flops浮点运算次数

matlab 常识

  • 指令过长可用‘…’分格
  • ‘;’不显示运算结果
  • %后面的语句均为注释
  • 基本运算符:’+’、’—’、’*’、‘’/’、’^’
  • clc擦去历史命令
  • clear删除工作区变量
  • clear all删去工作区所有变量和函数
  • delete<文件名>删去文件
  • help<命令/函数名/目录名>查询命令的帮助信息
  • which<文件名>查询指定文件路径
  • who显示工作区所有变量
  • whos列出变量的详细信息
  • size显示变量的尺寸
  • length显示变量的长度
  • Ctrl+C中断程序运行
  • lookfor<命令/函数>它通过完整或部分关键字来搜索相关内容,注意只能搜索文本第一行
  • which fun -all显示所命名为fun的函数路径
  • which file。ext显示指定文件路径
  • s=which(…)将查询结果返回给s

matlab 变量

  • 变量为数组或向量形式
  • 命名规则:只能由字母开头,不能包含空格符,区分大小写,不能是保留的关键字
  • 变量不需要定义可直接使用

matlab 基本数据类型

整数类型类型或声明函数
整数uint无符号整数,没有负数
整数int有符号整数
单精度浮点型single,64位,默认
双精度浮点型double,32位
逻辑型logical函数把数据值变为逻辑值,其中将不为零的数变为1
字符型char,也就是字符串型
日期和时间型date函数可在命令行显示当前时间
结构型struct
元胞型cell(细胞),{}创建,相当于表格,每一格的内容任意
符号型sym单个符号,syms多个符号

数据显示格式(format命令)

命令类型或声明函数
format / format short5位定点表示
format long15位定点表示
format short e5位浮点表示
format long e15位浮点表示
format short g系统选择5位定点和5位浮点中更好的表示
format long g系统选择15位定点和15位浮点中更好的表示
format rat近似的有理数的表示
format hex十六进制的表示
format bank用元角分(美制)定点表示
format compact变量之间没有空行
format loose变量之间有空行

变量显示

  • magic():魔方阵,每行每列和都为固定值
  • disp():以紧凑结构显示结果显示而不输出变量名

变量的存取函数及格式

  • save实现存储,将该变量存储到该文件中
  • load载入,从文件中将该变量导入内存
    格式1:load 文件名 变量名;
       save 文件名 变量名;
    格式2:S=load(‘文件名’,‘格式’,‘变量名’);
       save(‘文件名’,‘格式’, ‘变量名’);
  • 使用工作区的按键也可实现变量的新建、编辑、载入、保存、删除、绘图

数组与矩阵

一维数组和矩阵
  • 直接输入法:数据之间使用逗号和空格代表列与列的分隔符,分号代表行与行之间的分隔符
  • 冒号:初始值:步长:终止值  默认为1
  • 定数线性采样法
    x=linspace(a,b,n)产生a,b两点之间n个采样点数,包括两点
    y=logspace(a,b,n)定点对数采样,首点是10^a,尾点亦是、
  • 一维数组的访问使用圆括号,从1开始索引
  • end代表最后一个
  • 也可从末尾开始向前索引(实现倒序)
二维数组和矩阵
创建
  • 直接输入:矩阵的元素必须位于方括号内,矩阵的元素可以是数值,变量,表达式或函数
函数(matlab)提供了大量的函数
  • ones():产生全为1的矩阵
  • ones(m,n):产生m*n维矩阵
  • zeros():产生全为零的矩阵
  • rand():产生在(0,1)范围内的均匀分布的随机阵
  • eye():产生单位阵
  • randn():产生均值为1,方差为1的标准正态分布随机矩阵
利用Excel创建矩阵

原理1:用户系统安装有Excel,matlab创建Excel服务器,通过服务器接口读取数据

原理2:未安装Excel或不能访问COM服务器时,matlab即可利用基本模式读取数据,即把Excel文件作为二进制映像文件读取进来,然后读取其中的数据

  • 调用格式:num=xlsread(filename,sheet,range)

sheet可以是单引号括起来的字符串,也可以是正整数。

range是指定的读取的单元格区域,为了区分range必须是包含冒号的字符串

访问
  • 单下标,矩阵按照列来排序
  • 双下标,行列坐标索引A(i,j)=A((j-1)*m+i)
  • 冒号,表示全部,表示到

字符数组

创建

英文输入状态下的单引号对里面,字符带有单引号则在该位置需要两个单引号

标识

每个字符对应一个元素位,对应从1开始

ASCII
  • abs:可求绝对值和字符对应的ASCII码值
  • double:求ASCII码值
  • char:可把码数组变为串数组
拼接
  • 方括号用逗号分割可直接拼接
  • strcat函数拼接在同一行
  • strvcat函数拼接在不同行
常用字符操作函数
  • lower():将字符数组里面的字母转为小写
  • upper():将字符数组里面的字母转为大写
  • strfind(s1,s2):查找S1中S2的位置,没有将返回空数组
  • finder(S1,S2):查找S1和S2中,较短字符数组在较长字符数组里面出现的位置
  • 函数很多,使用时可具体查询

结构数组

结构数组的创建(可以表达具有不同属性的对象)
  • 结构数组变量名.属性名=属性值

    例子

    student.ID=2019303285;
    student.name='叶';
    student.sex='男';
    student.gread='A';
    % 采用动态扩充的方法添加第二个信息,将其扩充为1*2的数组
    student(2).ID=2019303286;
    student(2).name='冰冰';
    ...
    
    
  • 使用struct函数创建结构数组

    语法:S=struct(‘field1’,values1,‘field2’,valuse2,…);

    values1,values2,必须是相同维数的数据,可以是单元数组、数据数组或单个数值

    例子

    student=struct('ID',{2019303285,2019303286},'name',{'叶成基','王冰冰'},'sex',{'男','女'},'grade',{'A','A+'})
    student(1)
    student(2)
    
结构数组的操作函数
函数名功能描述
deal将其参数值的内容分别输出到一个个独立的变量
fieldnames获取结构的字段名
getfield获得结构中指定字段的值
rmfield删除结构的字段(不是字段的内容)

元胞数组cell

元胞可以包含可以包含任何类型的MATLAB数据

直接赋值法
  • 元胞索引法

    圆括号在左,花括号内容在右,将一个元胞赋值给某个单元

    A(1,1)={[1,2,3;4,5,6;7,8,9]}
    A(1,2)={2+3*i}
    A(2,1)={12:-2:0}
    A(2,2)={'Chinese'}
    
    
  • 内容索引法

    花括号在左,将数值直接赋给某个单元

    B{1,1}=[1,2,3;4,5,6;7,8,9]
    
  • cell函数法

    A=cell(m,n)

访问

分为两种情况,访问元胞的概况,访问元胞的值。圆括号访问元胞的概况,花括号访问元胞的值

celldisp函数,将元胞里面的数据单元挨个输出

cellplot函数将其图形化表示[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ERm6OI8u-1646300032312)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220127145447513.png)]

矩阵的运算和操作

算术运算
基本运算符号及解释
加减运算‘‘+,-’’
乘运算‘‘*’’
除运算右除‘‘/’’,左除‘‘\’’,左右要分清
乘方运算“^”
点运算

点运算是指他们对应的元素进行相关运算,要求矩阵同维

  • 点乘运算“.*”
  • 点除运算“.\”“./”
  • 点次幂“.^”
关系运算

<小于,>大于,<=小于等于,>=大于等于,==等于,~=不等于

运算规则

  • 成立返回1,否则为0
  • 当两个同维矩阵进行关系运算时返回一个0、1组成的同维矩阵
  • 一个是标量一个是矩阵时逐个比较
逻辑运算

与&、|或、~非

运算规则

  • 算术运算优先级最高,逻辑运算优先级最低
  • 同维逐个比较,标量也是
元素取整、取模、取余
  • floor():向下取整
  • ceil():向上取整
  • round():四舍五入取整
  • fix():向零取整
  • abs():取模
  • mod(x,y)、rem(x,y):前者结果的符号和x相同,后者则相反

矩阵的分析处理

处理函数
行列式det(A)
rank(A)
trace(A)
inv(A)
特征值eig(A)

1/28

数据可视化

t=0:0.01:2*pi;
y=exp(-t/3).*sin(2*t);
plot(t,y,'-r*','linewidth',2)
axis([0,4*pi,-1,1])
xlable('时间/t')
ylable('振幅衰减/y')
title('衰减振动')
基本二维曲线

plot(y):y可以是向量、实数矩阵或者复数向量

real(y):求实部

imag(y):求虚部

x=[1:1:99 100:-1:2 1:-1:-98 -97:2:55];
y=[100:-1:2 1:-1:-97 -98:1:1 0:1:76];
z=x+y.*i;
plot(z)

plot(x,y):x,y均为向量和矩阵,其中有3种组合用于绘制连线图。x,y均为n维向量时,绘制向量y对于向量x的图形。x为n维向量,y为mn或者nm矩阵时,该命令将同一图内绘制m条颜色不同的连线。

x=0:1:10;
y=[0,1,2,3,4,5,6,7,8,9,10;10,9,8,7,6,5,4,3,2,1,0];
plot(x,y)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YYltwrOU-1646300032314)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220128141435008.png)]

绘图辅助操作

plot命令可设置的属性

命令属性意义
Color颜色
LineStyle线型
LineWidth线宽
MarkerType标记点的形状
MarkerSize标记点的大小
MarkerFaceColor标记点内部填充的颜色
MarkerEdgeColor标记点边缘的颜色

线型、标记和颜色属性可百度

​ 例子

plot(x,y,'-r*',...,'LineWidth','2','MarkerEdgeColor','k')

坐标轴标注和范围设置

xlabel('str')%设置坐标名称
ylabel('str')
zlabel('str')
axis([xmin,xmax,ymin,ymax])%设置坐标范围
xlim([xmin,xmax])%设置x坐标范围
axis off%关闭所有坐标轴标签、刻度和背景
axis on %打开所有坐标轴标签、刻度和背景
多图叠绘
格式说明
hold on保持现有的图形,添加新的曲线
hold off将现有的图形释放,绘制新的图形
hold实现hold命令之间的切换
图例标注
legend('str1','str2'...'location','English')%位置为因为单词,首字母大写
多子图绘制
格式说明
subplot(m,n,p)将图形窗口分为m*n,在第p个子窗口绘制窗口
subplot(m,n,p,‘replace’)绘制图形时,将删除原来的坐标系,绘制新的
subplot(m,n,p,‘align’)对齐坐标系
特殊图形的绘制
函数位置
area填充图形
bar条形图
barh水平条形图
comet彗星图
fplot函数绘制
hist柱状图
pie饼状图
y=round(rand(5,4)*10);
bar(y,'group','r');
title('bar exam')

#其他画法可百度#

1/29

三维数据可视化

与二维图形的绘制很是类似,其中曲线的属性设置完全相同,最常用的是绘制三维曲线、三维网格和三维曲面,相应的命令为plot3,mesh,surf

三维曲线的绘制
plot3(x,y,z,……)
plot3(x,y,z,LineSpec,……)
plot3(……,'PropertyName',PropertyValue,……)
%x,y,z为相同维数的向量或矩阵,曲线的个数等于数组的列数
x=0:1:10;
y=10:-1:0;
z=0:10:100;
plot3(x,y,z)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AWPzcj7P-1646300032315)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220129123710492.png)]

t=0:pi/50:10*pi;
x=cos(t);
y=sin(t);
z=t;
plot3(x,y,z,'LineWidth',2);
title('螺旋线');
xlabel('x','fortsize',14);
ylabel('y','fortsize',14);
zlabel('z','fortsize',14); %字体大小14
grid on %打开网格线

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bORzskBc-1646300032315)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220129124345063.png)]

三维网格的绘制
格式说明
mesh(z)以z矩阵的列和行的下标为x轴和y轴的自变量绘制网格网
mesh(x,y,z)其中,x,y为自变量矩阵,z为建立在x,y之上的函数矩阵
mesh(x,y,z,c)c用于指定矩阵z在各点的颜色
[x,y,z]=peaks(30);%返回高斯分布的数值范围
mesh(x,y,z);%绘制三维网格
title('mesh exam1');
xlabel('X');
ylabel('Y');
zlabel('Z');
grid on

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sSTvkw9O-1646300032315)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220207132328281.png)]

%meshc(),在图像下面绘制等值线图
[x,y,z]=peaks(30);%返回高斯分布的数值范围
meshc(x,y,z);%绘制三维网格,和等值线
title('mesh exam1');
xlabel('X');
ylabel('Y');
zlabel('Z');
grid on

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nSIIkFsT-1646300032316)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220207133005904.png)]

%meshz()用于增加边界绘图功能
[x,y,z]=peaks(30);%返回高斯分布的数值范围
meshz(x,y,z);%绘制三维网格和边界
title('mesh exam1');
xlabel('X');
ylabel('Y');
zlabel('Z');
grid on

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N5Iwd1ev-1646300032316)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220207133333975.png)]

三维曲面的绘制
格式说明
surf(z)以z矩阵的行列下标为x,y自变量绘制曲面图
surf(x,y,z)其中,x和y为自变量矩阵,z为建立在x,y之上的函数
surf(x,y,z,c)此命令和上面的命令相比,c用于指定矩阵z在各点的颜色
surf(…,‘PropertyName’,PropertyValue)用于设置曲面颜色、线型等属性

x和y必须均为向量,x和y的长度分别为m和n,则z必须为m*n矩阵,[m,n]=size(Z)

[x,y,z]=peaks(30);
surf(x,y,z);
title('surf exam');
xlabel('X');
ylabel('Y');
zlabel('Z');
grid on

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qJWNcRNS-1646300032316)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220207134938136.png)]

[x,y,z]=peaks(30);
surfc(x,y,z);%绘制曲面图,在底层绘制等值线
title('surfc exam');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HAhJeclQ-1646300032317)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220207135149860.png)]

[x,y,z]=peaks(30);
surfl(x,y,z);%绘制曲面图时,则考虑光照效果
title('surf1 exam');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UgLa66Cc-1646300032317)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220207135613604.png)]

[x,y,z]=peaks(30);
surfnorm(x,y,z);%定义各个曲面的法线,同时在数据点处绘制曲面法线
title('surfl exam');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRsUGh66-1646300032318)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220207140008898.png)]

2/7

控制程序流

if语句
x=input('请输入x的值:');
if x<=0
	y=log(x);
else 
	y=sqrt(x);
end
disp(y);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pIOUZLaf-1646300032318)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220207143157185.png)]

if 表达式1
	语句组1
elseif 表达式2
	语句组2
elseif 表达式3
	语句组3
	……
end
c=input('请输入一个字符:','s');%匹配字符串
if c>='A' & c<='Z'
	disp(setstr(abs(c)+abs('a')-abs('A')));
elseif c>='a' & C<='z'
	disp(setstr(abs(c)-abs('a')+abs('A')));
else
	disp(c);
end

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ydpbu26e-1646300032318)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220207180948623.png)]

switch-case条件控制语句

switch-case-end又称开关语句,语法格式如下

switch 表达式
	case 常量表达式1
		语句1
	case 常量表达式2
		语句2
	case 常量表达式3
		语句3
		……
	case 常量表达式n
		语句n
	otherwise
		语句组n+1
end
% 表达式为开关条件,可为数字或字符串。当表达式的值与某个case的常量表达式相同时,就执行相应的语句组。完成一个case后就会立马跳出switch,与c语言不同。
price=input('请输入商品价格:');
switch fix(price/10)
	case 0:4
		rate=0;
	case 5:7
		rate=3/100;
	case 8:10
		rate=5/100;
	case 11:20
		rate=10/100;
	otherwise
		rate=14/100;
end
price=price*(1-rate)
循环控制结构

for循环主要用于以固定取值或循环次数的重复执行过程,语法格式如下

%for 循环变量=表达式
%	语句组
%end
% 程序首先计算表达式,若结果为标量或行数组,则将表达式的第一个值赋给循环变量,并执行语句,然后将表达式的第二个值赋给循环变量,并执行语句组,以此类推,直到所有值被取尽
%计算1到999之间所有偶数之和
s1=0;
for m=2:2:999
	s1=s1+m;
end
s1
s2=sum(2:2:999)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AFZw7xBy-1646300032319)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220208213257682.png)]

%计算矩阵各行之和
A=magic(5);
s1=0;
for m=A
	s1=s1+m;
end
disp(s1);
s2=sum(A,2)
%sum(A,2);求各行之和
%sum(A,1);求各列之和

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T9wM9B2b-1646300032319)(…/…/…/…/…/home/yecj/.config/Typora/typora-user-images/image-20220208214907544.png)]

%for循环可嵌套使用,但不宜超过四层,嵌套越多,执行效率就越低
continue,break和pause
语句功能
pause实现暂停功能
continue表示当前循环不再向下执行,执行下次循环
break跳出整个循环
%找到一个100到200之间的第一个被23整除的整数
for n=100:200
	if rem(n,23)==0
		break
	end
end
n
% pause
% pause(time)
x=0:pi/20:6*pi;
y=2*sin(x)+sin(2*x);
for n=1:100
	y2=y+rand(size(y));
	plot(x,y2);
	pause(0.05)
end
input和keyboard

常用键盘控制函数有input和keyboard

input函数执行时,“控制权”交给键盘;待输入结束,按下回车键,‘‘控制权’’交还MATLAB,其调用格式如下:

v=input('message') %输入数据,不能输入字符
v=input('message','s') %不管输入什么,总以字符串形式赋给变量v
x=input('enter the value of''x'':');
y=input('enter the value of''y'':');
if y==0
	keyboard
	n=x/y;
else
	n=x/y;
end
disp(n);
error和warning

常用的错误和警告对话框提示函数有error和warning函数,warning会让程序继续执行,error则终止程序

%测试warning和error的不同之处
a=input('请输入你的代号007:');
if a==7
	warning('你输入了007,但是你不是007!');
end
b=input('请输入你的真实代号!');
if b~=1
	error('你的真实代号错误!');
else
	disp(['你的真实代号00',b]);
end
% error会让终止程序,warning会继续下一步
%测试warning和error的不同之处
a=input('请输入你的代号007:');
if a==7
	warning('你输入了007,但是你不是007!');
end
b=input('请输入你的真实代号!');
if b~=1
	%error('你的真实代号错误!');
	errordlg('你的真实代号错误','错误提示');% 显示出错误对话框
else
	disp(['你的真实代号00',b]);
end
% error会让终止程序,warning会继续下一步
try和catch

try的作用是让MATLAB尝试执行一些语句,如果出错,则执行catch部分的语句,其语法格式如下:

try
		尝试执行的语句块
	catch
		出错后执行的语句块
	end
%利用try和catch尝试执行两个矩阵相乘
a=magic(4);
b=eye(3);
try
	c=a*b
	catch
	c=a(1:3,1:3)*b
	end
lasterr

2/10

函数

创建方式
第一种利用function建立函数文件
第二种利用inline建立内联函数
第三种利用@建立无名函数
function
% function建立的函数文件,按照文件名调用,一般使用函数名命名文件名
% 在M文件中,函数声明由function开始,其后必须有函数名,输入变量和输出变量根据需要确定有无
function 输出形参=函数名(输入形参)
注释说明部分
函数体语句
%实现两个矩阵的相加减运算
function [c,d]=file12(a,b)
if size(a)~=size(b)
	warning('矩阵维数不同,不能执行运算');
	c=NaN
	d=NaN
else
	c=a+b;
	d=a-b;
	disp([c,d])
end
inline
% 在MATALB命令窗口、程序或者函数中创建局部函数时,可使用inline
% 优点:不必存储为一个单独的m文件
% 限制:1不能调用另一个inline函数,只能由表达式组成。2只能返变量
创建匿名函数
%函数名=@(输入参数)函数表达式
handle=@(arglist)anonymous_function
f=@(x,y)x^y+2*y;
f(1,2)
函数的调用与可调性
% 例子,统计平均分和最高分
function main
stu(1).c=80;stu(1).m=78;stu(1).e=91;
stu(2).c=84;stu(2).m=74;stu(2).e=88;
stu(3).c=85;stu(1).m=76;stu(1).e=98;
%调用子函数
stu1=stat(stu);
disp(['中文平均分:'num2str(stu1(1).mean)])
disp(['中文最高分:'num2str(stu1(1).max)])
disp(['数学平均分:'mum2str(stu1(2).mean)])
disp(['数学最高分:'num2str(stu1(2).max)])
disp

on开始,其后必须有函数名,输入变量和输出变量根据需要确定有无
function 输出形参=函数名(输入形参)
注释说明部分
函数体语句


```matlab
%实现两个矩阵的相加减运算
function [c,d]=file12(a,b)
if size(a)~=size(b)
	warning('矩阵维数不同,不能执行运算');
	c=NaN
	d=NaN
else
	c=a+b;
	d=a-b;
	disp([c,d])
end
inline
% 在MATALB命令窗口、程序或者函数中创建局部函数时,可使用inline
% 优点:不必存储为一个单独的m文件
% 限制:1不能调用另一个inline函数,只能由表达式组成。2只能返变量
创建匿名函数
%函数名=@(输入参数)函数表达式
handle=@(arglist)anonymous_function
f=@(x,y)x^y+2*y;
f(1,2)
函数的调用与可调性
% 例子,统计平均分和最高分
function main
stu(1).c=80;stu(1).m=78;stu(1).e=91;
stu(2).c=84;stu(2).m=74;stu(2).e=88;
stu(3).c=85;stu(1).m=76;stu(1).e=98;
%调用子函数
stu1=stat(stu);
disp(['中文平均分:'num2str(stu1(1).mean)])
disp(['中文最高分:'num2str(stu1(1).max)])
disp(['数学平均分:'mum2str(stu1(2).mean)])
disp(['数学最高分:'num2str(stu1(2).max)])
disp
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值