Matlab学习日记(五)

本文档详细介绍了MATLAB中输入输出变量的使用,包括不同类型的输入和输出方式,如输入浮点数、字符以及数组。同时,讲解了变量的显示和输出方法,如使用disp和fprintf函数。此外,还涵盖了基本的绘图功能,如plot、bar图的绘制,以及数据的保存和读取操作。内容还包括如何通过输入指令交互地获取用户输入,并在命令行窗口中显示结果。
摘要由CSDN通过智能技术生成

5.第五天2022-1-23

5.1 脚本编写和注释+变量的输入1

>> rad=input('Enter the radius:')
Enter the radius:5
rad =
     5
>> letter=input('Enter the char: ','s') %s表示希望输入的内容被解读成字符
Enter the char: 5
letter =
    '5'
>> whos
  Name        Size            Bytes  Class     Attributes
         
  circle      1x1                 8  double              
  letter      1x1                 2  char                
​
%直接输出变量也是可以的
>> R=16
R =
    16
>> rad=input('Enter the radius:')
Enter the radius:R
rad =
    16
>> letter=input('Enter the char: ','s') %s表示希望输入的内容被解读成字符
Enter the char:    %不输入内容,直接回车
letter =
  空的 0×0 char 数组
>> letter=input('Enter the char: ','s') %s表示希望输入的内容被解读成字符
Enter the char:       go
letter =
    '      go'                          %空格会包含在里面
>> letter=input('Enter the char: ','s') %s表示希望输入的内容被解读成字符
Enter the char: 'apple'
letter =
    ''apple''
>> letter=input('Enter the char: ') 
Enter the char: 'apple'
letter =
    'apple'
    
%双引号,字符串  
>> letter=input('Enter the char: ')
Enter the char: "apple"
letter = 
    "apple"
>> whos
  Name        Size            Bytes  Class     Attributes           
  letter      1x1               158  string 
length=input('Enter the length: ');
units=input('Is that f(eet) or m(eters)?: ','s');
​
%命令行窗口出现以下结果:
Enter the length: 12.3
Is that f(eet) or m(eters)?: m
>> length
length =
   12.3000
>> units
units =
    'm'
    
>> v=input('Enter a vector: ') %输入数组
Enter a vector: [12 4 567]
v =
    12     4   567

5.2 变量的输出和显示2

>> test %运行test脚本
the area of the disc is 78.539816 
the circle of the disc is 31.415927 
>> disp(area) %运用函数输出面积
   78.5398
>> disp(letter) %运用函数输出字符串里面的内容
apple
>> fprintf('The value is %d, for sure! \n',4^3) %fprintf输出,%d是占位符,以整数的格式输出,\n是换行
The value is 64, for sure! 
>> fprintf('The value is %f, for sure! \n',4^3) % %f数字以浮点数的格式显示出来
The value is 64.000000, for sure! 
>> fprintf('The value is %c, for sure! \n',4^3) % %c以char字符的形式输出出来
The value is @, for sure! 
>> fprintf('The value is %s, for sure! \n',[64 65]) % s和c的区别是 s一次性输出多个字符 c要一个个输出
The value is @A, for sure! 
>> fprintf('The value is %c, for sure! \n',[64 65])
The value is @, for sure! 
The value is A, for sure! 
>> fprintf('line 1\nline 2\n\nline 4\n') %n是换行
line 1
line 2
​
line 4
>> fprintf('The length is %f. \nThe unit is %c.\n',length,units) %输出两个或多个变量
The length is 12.300000. 
The unit is m.
>> fprintf('|%6d|\n',4^3) % %6d是输出整数,占用6个字符的宽度
|    64|
>> fprintf('|%6d|\n',randi([1,1000],[10,1])) %限制字符的宽度,会显得更清晰
|   815|
|   906|
|   127|
|   914|
|   633|
|    98|
|   279|
|   547|
|   958|
|   965|
>> fprintf('|%8.3f|\n',pi) % %f是浮点数,所以会有小数点,要用两个数字限制,8是字符宽度,3是小数点位数
|   3.142|
>> fprintf('|%8.3f|\n',rand([10,1])+2) %产生浮点数在2-3之间
|   2.158|
|   2.971|
|   2.957|
|   2.485|
|   2.800|
|   2.142|
|   2.422|
|   2.916|
|   2.792|
|   2.959|
>> fprintf('|%-10d|\n',randi([1,1000],[10,1])) %加个减号是左对齐的方式输出
|656       |
|36        |
|850       |
|934       |
|679       |
|758       |
|744       |
|393       |
|656       |
|172       |
>> fprintf('|%+10d|\n',randi([-1000,1000],[10,1])) %%加个加号是显示出数字的正负号输出
|      +412|
|      -937|
|      -446|
|      -908|
|      -806|
|      +647|
|      +390|
|      -366|
|      +901|
|      -932|
>> fprintf('|%10s|\n','street') %输出字符长度是10的字符串
|    street|
>> fprintf('|%.4s|\n','street') %强制输出4个字符
|stre|
>> fprintf('%11d\n',randi([10^6,10^10],[100,1])+10^10) %就可以生成100个11位的电话号码了
>> fprintf('%f\t%f\t%f\n',rand(),rand(),rand()) %\t是等间距的空格
0.032601    0.561200    0.881867
>> test %运行test脚本
>> fprintf('''\n') %两个单引号打出来,会返回一个单引号
'
>> fprintf('\\\n') %反斜杠是一样的道理
\
%%代码
fprintf('Note: the units will be inches.\n');
radius = input('Please enter the radius: ');
area=pi*radius^2; %求面积
fprintf('for the circle with a radius of %.2f inches,the area of the disc is %.2f inches squared\n',radius,area);
%命令行窗口
>> test2
Note: the units will be inches.
Please enter the radius: 5
for the circle with a radius of 5.00 inches,the area of the disc is 78.54 inches squared

5.3 变量的输出和显示3+基本绘图功能

5.3.1 输出和输入

%%若没规定浮点数的小数位数,则默认是6位
>> fprintf('|%12f|\n',pi)
|    3.141593|
>> fprintf('|%12.6f|\n',pi)
|    3.141593|
​
%%练习
ch=input('Enter the character: ','s');
num=input('Enter the number: ');
fprintf('the character is %3c.\n',ch);
fprintf('the number is %-8.3f.\n',num);
%测试结果
>> test2
Enter the character: a
Enter the number: 13.2
the character is   a.
the number is 13.200  .

5.3.2 绘图

%% 创建(x,y),画出红色的星号
x=11;
y=48;
plot(x,y,'r*'); % r是红色的意思,可以放在*的前面后面都可以
%% 图像中显示的x和y的范围、xlabel、ylabel
%axis([9 12 35 55]); % axis([xmin xmax ymin ymax])
axis([x-2 x+2 y-10 y+10]);%使得点一定落在图的特定范围内
xlabel('Time');
ylabel('Temperature');
%% title
title('Time and Temperature');

 

x=1:6;
y=[1 5 3 9 11 8];
plot(x,y,'r*--'); % r颜色 *点的形状 --线的形状
hold;
plot(x,x+1,'mx:'); %m是颜色 x是点的形状 :是线的形状    若只想出现点,就‘x’
​
xlabel('Time');
ylabel('Temperature');
​
title('Time and Temperature');

[关于hold的解释]  

 

5.4 基本绘图功能2+关于hold的注意事项

%%hold; hold on; hold off
%% 画两张图
x=1:6;
y=[1 5 3 9 11 8];
plot(x,y,'r*--'); % r颜色 *点的形状 --线的形状
%plot呼唤绘图窗口figure 1 就绪,画图
​
hold on; %接着画
plot(x,x+1,'mx:'); %m是颜色 x是点的形状 :是线的形状
plot(x,x+2,'go-');
hold off; %结束画
​
xlabel('Time 1');
ylabel('Temperature 1');
title('Time and Temperature 1');
​
figure(); %呼唤新的绘图窗口figure 2激活
plot(x,x+1,'x-'); %figure 2
xlabel('Time 2');  %figure 2
ylabel('Temperature 2');  %figure 2
title('Time and Temperature 2');  %figure 2
​
figure(1)%呼叫figure 1激活,此时figure 2 没激活
hold on; % ishold=true, on figure 1
plot(x,x+3,'o-');

 

close all; %close all figure window(s)
figure(1); %召唤出figure 1
x=1:6;
y=[1 5 3 9 11 8];
plot(x,y); hold on; %接着画
​
figure(2);
plot(x,y+1,'x-');hold on; 
%会出现两张图,如果点击figure 1的图,
clf %clear current figure 清空激活的画布 即清空figure 1 轴、数字和线都没有了
plot(x,y+1,'o:'); %m是颜色 x是点的形状 :是线的形状 在figure 1画
​
xlabel('Time 1');
ylabel('Temperature 1');
title('Time and Temperature 1');

 

一个figure上可以有很多画布,每个画布有自己的画布状态

cla清空选中的画布,清空内容,但是轴和数字还在,线没有了

%% cla和一个figure上的两块画布
close all; %close all figure window(s)
figure(1); %召唤出figure 1
x=1:6;
y=[1 5 3 9 11 8];
​
subplot(2,1,1);
plot(x,y);hold on; 
​
subplot(2,1,2);plot(x,y+1,'o:'); hold on;%m是颜色 x是点的形状 :是线的形状
​
xlabel('Time 1');
ylabel('Temperature 1');
title('Time and Temperature 1');

 

5.5 基本绘图功能3+数据的保存和读取1

5.5.1 绘图

>> plot(rand(3,1),'o-') %1线
>> hold on 
>> plot(rand(3,1),'o:') %2线
>> plot(rand(3,1),'rx:') %3线
>> plot(rand(3,1),'o:') %4线
>> grid %加入网格 
>> grid %关掉网格
>> grid on%强制开启网格
>> grid off%强制关掉网格
>> grid on
>> legend('Line 1','Line 2','Line 3','Line 4') %对线做说明

 

>> bar(1:10,randi([1,10],[1,10]))%画柱状图。里面的数字表示横纵坐标的范围,x范围1到10,y范围是1行10列的1到10的随机整数
>> hold on
>> plot(1:0.1:10,sin(1:0.1:10),1:0.1:10,cos(1:0.1:10))%两组函数,x范围1到10,间隔0.1,画sin和cos图像
>> xlabel('x');
>> ylabel('y');
>> title('figure 1');
>> legend('bar','Line 2','Line 3') 

 

5.5.2 数据读取写入累加

1.写入

>> save testfile.dat mymat -ascii %-ascii是一个描述性语句,意思是以字符的形式存储
>> type testfile.dat 
​
   8.4912931e-01   6.7873515e-01   7.4313247e-01
   9.3399325e-01   7.5774013e-01   3.9222702e-01

 

%%在上面的基础上继续,生成mymat2,执行save语句,会覆盖掉原来的内容
>> mymat2=rand(4,3)
mymat2 =
    0.6555    0.2769    0.6948
    0.1712    0.0462    0.3171
    0.7060    0.0971    0.9502
    0.0318    0.8235    0.0344
>> save testfile.dat mymat2 -ascii %-ascii是一个描述性语句,意思是以字符的形式存储
>> type testfile.dat

   6.5547789e-01   2.7692298e-01   6.9482862e-01
   1.7118669e-01   4.6171391e-02   3.1709948e-01
   7.0604609e-01   9.7131781e-02   9.5022205e-01
   3.1832846e-02   8.2345783e-01   3.4446081e-02
%%基础上继续,生成mymat3,在原存储基础上添加内容
>> mymat3=rand(4,3)
mymat3 =
    0.4387    0.1869    0.7094
    0.3816    0.4898    0.7547
    0.7655    0.4456    0.2760
    0.7952    0.6463    0.6797
>> save testfile.dat mymat3 -ascii -append%-ascil是一个描述性语句,意思是以字符的形式存储,append是在原存储内容的基础上添加
>> type testfile.dat

   6.5547789e-01   2.7692298e-01   6.9482862e-01
   1.7118669e-01   4.6171391e-02   3.1709948e-01
   7.0604609e-01   9.7131781e-02   9.5022205e-01
   3.1832846e-02   8.2345783e-01   3.4446081e-02
   4.3874436e-01   1.8687260e-01   7.0936483e-01
   3.8155846e-01   4.8976440e-01   7.5468668e-01
   7.6551679e-01   4.4558620e-01   2.7602508e-01
   7.9519990e-01   6.4631301e-01   6.7970268e-01
%%也可以添加不是同一列数的矩阵
>> mymat4=rand(3,4)
mymat4 =
    0.6551    0.4984    0.5853    0.2551
    0.1626    0.9597    0.2238    0.5060
    0.1190    0.3404    0.7513    0.6991
>> save testfile.dat mymat4 -ascii -append%-ascil是一个描述性语句,意思是以字符的形式存储,append是在原存储内容的基础上添加
>> type testfile.dat

   6.5547789e-01   2.7692298e-01   6.9482862e-01
   1.7118669e-01   4.6171391e-02   3.1709948e-01
   7.0604609e-01   9.7131781e-02   9.5022205e-01
   3.1832846e-02   8.2345783e-01   3.4446081e-02
   4.3874436e-01   1.8687260e-01   7.0936483e-01
   3.8155846e-01   4.8976440e-01   7.5468668e-01
   7.6551679e-01   4.4558620e-01   2.7602508e-01
   7.9519990e-01   6.4631301e-01   6.7970268e-01
   6.5509800e-01   4.9836405e-01   5.8526775e-01   2.5509512e-01
   1.6261174e-01   9.5974396e-01   2.2381194e-01   5.0595705e-01
   1.1899768e-01   3.4038573e-01   7.5126706e-01   6.9907672e-01
%%练习
%提示用户输入矩阵的行数和列数
r=input('Enter the number of rows:');
c=input('Enter the number of columns:');
​
%创建有上述输入行和列的矩阵,随机整数矩阵,1-100
mat=randi([1,100],[r,c]);
​
%将上述矩阵写入'randMat.dat'的文件中
save randMat.dat mat -ascii;
​
%%命令行窗口
>> test2
Enter the number of rows:4
Enter the number of columns:4
>> type randMat.dat
​
   9.0000000e+01   1.5000000e+01   8.2000000e+01   2.0000000e+01
   9.6000000e+01   2.6000000e+01   2.5000000e+01   2.6000000e+01
   5.5000000e+01   8.5000000e+01   9.3000000e+01   6.2000000e+01
   1.4000000e+01   2.6000000e+01   3.5000000e+01   4.8000000e+01
>> test2
Enter the number of rows:3
Enter the number of columns:5
>> type randMat.dat
​
   3.6000000e+01   5.5000000e+01   7.6000000e+01   5.7000000e+01   5.4000000e+01
   8.4000000e+01   9.2000000e+01   7.6000000e+01   8.0000000e+00   7.8000000e+01
   5.9000000e+01   2.9000000e+01   3.9000000e+01   6.0000000e+00   9.4000000e+01

2.读取

>> load randMat.dat
>> type randMat.dat
​
   3.6000000e+01   5.5000000e+01   7.6000000e+01   5.7000000e+01   5.4000000e+01
   8.4000000e+01   9.2000000e+01   7.6000000e+01   8.0000000e+00   7.8000000e+01
   5.9000000e+01   2.9000000e+01   3.9000000e+01   6.0000000e+00   9.4000000e+01

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值