1. 显示输出数据的三种方式
1.1 改变数据格式
当数据重复再命令行窗口时,整数以整形形式显示,其他值将以默认格式显示。MATLAB的默认格式是精确到小数点后4位。如果一个数太大或太小,那么将会以科学记数法的形式显示。比如:
>> x=100.11
x =
100.1100
>> y=1001.1
y =
1.0011e+03
>> z=0.00010011
z =
1.0011e-04
改变默认输出格式要用到format命令,可根据下表改变数据的输出格式
其中美元格式是指按美元精确到美分的格式记数,隐藏/使用多余的换行符这个我也试出来有什么卵用。
1.2 disp函数
另一种显示数据的方法是用disp函数。disp需要一个数组参数,它将值显示在命令行窗口。如果这个数组是字符型,那么包含在这个数组中的字符串将会打印在命令行窗口。
此函数可联合num2str(将一个数转化为字符串)和int2str(讲一个整数转化为字符串)来产生新的信息,显示在命令行窗口中。例如,下面的语句将“the value of pi=3.1416”显示在命令行窗口中。第一句创建了一个字符型数组,第二句用于显示这个数组。
>> str=['the value of pi=' num2str(pi)];
>> disp(str);
the value of pi=3.1416
1.3 用fprintf函数格式化输出数据
用fprintf函数显示数据是一种十分简便方法。fprintf函数显示带有相关文本的一个或多个值,允许程序员控制显示数据的方式。它在命令行窗口打印一个数据的一般格式如下:
fprintf(format,data)
其中format用于表示一个描述打印数据方式的字符串,data代表要打印的一个或多个标量或数组。format包括两方面的内容,一方面是打印文本内容;另一方面是打印内容中的数据格式。例如
>> fprintf('the value of pi is%6.2f\n',pi)
the value of pi is 3.14
打印的结果为the value of pi is 3.14,后面带有一个换行符。转义序列%6.2f代表在本函数中的第一个数据项将占有6个字符宽度,小数点后有2位小数。
fprintf函数又一个重大的局限性,只能显示复数的实部。当我们的计算结果是复数时,这个局限性将会产生错误。在这种情况下,最好用disp显示数据。
例如
>> i
ans =
0.0000 + 1.0000i
>> disp([i])
0.0000 + 1.0000i
>> fprintf('i is%8.4f\n',i)
i is 0.0000
注意fprintf忽略了虚部
1.4 对比总结
- 改变数据的默认格式可以让数据以你想要的形式展现,包括精确到哪一位、多少进制显示、只显示正负等;
- 使用disp函数来打印可以打印所有的内容,包括负数,但要注意的是disp函数需要的是数组参数,并且只会打印数组内的字符串,所以如果是一个数字你需要使用int2str或num2str转化成字符串,但是如果是一个矩阵,你可以直接打印(至于为什么可以直接打印数字格式的矩阵,我也不明白);
- 使用fprintf函数可以以任何的数据格式打印数据,而且可以带有一个或多个值,但是要使用正确的特殊字符,但值得注意的是fprintf函数只能复数的实部,所以在有复数参加或产生的计算中,可能产生错误的结果;
总的来说,使用fprintf最为灵活方便,可以输出任何格式,而且可以有多个数据项,但fprintf需要定义数据项的字符宽度和数据格式,所以上手感觉有点繁琐。
2 将不同长度的一维数组存入二维数组
将多个不同长度的一维数组存入二维数组时,需要将所有一维数组的长度转为相同长度,可以采用在数组后边补零的方式实现。
如果a是行向量,M是你要的最终向量的长度,用
a=[a , zeros(1,M-length(a))];
如果a是列向量,改成
a=[ a ; zeros(M-length(a),1)];
3 数组中多少个不同的值
n = length(unique(B)); 不同值个数
unique(B,‘rows’) 所有的不同值
4 去除矩阵内的0元素
向量:
a=[1,0,2,3,0,4,5]
a(find(a==0))=[]
a =
1 2 3 4 5
矩阵:
a=[0 0;1 2;0 0;3 4]
a =
0 0
1 2
0 0
3 4
a(find(a==0))=[]
a =
1 3 2 4
a=reshape(a,2,2)
a =
1 2
3 4
利用 [ ] 删除矩阵中全为0的某行
A=[ 0 0 0;
1 0 0;
1 1 1];
A =
0 0 0
1 0 0
1 1 1
A(any(A,2)==0,:)=[]
A =
1 0 0
1 1 1
https://www.cnblogs.com/adong7639/p/10330387.html
https://blog.csdn.net/qq_39671345/article/details/118382918
https://blog.csdn.net/SailingLT/article/details/80673556