由于 MATLAB不使用 stdin 和 stdout,而是使用command window进行交互。因此不需要使用 scanf 和 printf 等 C/C++ 函数来提示用户进行输入。但在某些情况下需要提示用户进行输入并打印相关结果时,可使用如下函数。
MATLAB中使用input()函数获取用户输入。
a = input(''); %不含提示的单个数值输入
a = input('Please input a number:'); %含提示的单个数值输入
a = input('', 's'); %不含提示的字符串输入
a = input('Please input a string:', 's'); %含提示的字符串输入
a = input('', 's'); %以字符串读入
a = str2num(a); %将字符串转化为一维向量,方便后续处理
例如输入以空格和换行符输入三维矩阵:
a = zeros(3,3);
for i =1:3
A{i} = input('','s'); %使用胞元数组获取字符串
a(i,:) = str2num(A{i}); %将字符串转化为一维数组
end
在不知道用户即将输入几行几列时,该方法不适用。等日后了解到好的方法再来补充。
disp()函数表示显示变量的值,对于单个数值、字符串、数组、矩阵都按照其格式显示。
A = 5;
disp(A)
5
A = [5 10];
disp(A)
5 10
A=[1 2;3,4];
disp(A)
1 2
3 4
A = 'Hello World ! ';
disp(A)
Hello World !
fprintf()函数为格式化输出函数,用法与C语言printf类似。
a = 3.1415926;
fprintf('PI is %.5f.\n', a);
pi is 3.14159.
对于一维数组,根据格式化字符逐个进行输出。
a = [1 3 5];
fprintf('%d\n',a);
1
3
5
对于矩阵,可以使用以下方式输出。
a = [1.02 2.21 3.58;4.12 5.85 6.58;7.96 8.73 9.86];
for i =1:9
if mod(i,3) == 0
fprintf('%.2f\n',a(i));
else
fprintf('%.2f ',a(i));end
end
end
1.02 2.21 3.58
4.12 5.85 6.58
7.96 8.73 9.86
对于字符串,使用%s格式化字符。
s = 'hello world!';
fprintf('%s\n',s)
hello world!