操作系统:win10 Matlab版本:Matlab R2017a
1.分别求一个三位正整数的个位、十位、百位。
x=input('x=?:');
a=fix(x/100) %百位
b=rem(fix(x/10),10) %十位
c=rem(x,10) %个位
批注:默认数据类型为8位double,更改输出显示为format,默认显示小数点后四位。
2.求【1,100】区间的所有素数。
x=1:100;
y=isprime(x);%找到素数,返回1
y1=find(y);%素数的位置
x(y1)%输出
3.求全部水仙花数。
水仙花数是指:一个三位数,其各位数字立方和等于该数本身。例如:370=33+73+00.这就说明370是一个水仙花数。
自己写的版本:
clc,clear
for i=100:1:999
a=fix(i/100);
b=rem(fix(i/10),10);
c=rem(i,10);
if (a^3+b^3+c^3==i)
disp(i)
end
end
例子程序:
i=100:999;
m1=fix(i/100);
m2=rem(fix(i/10),10);
m3=rem(i,10);
k=find(i==m1.*m1.*m1+m2.*m2.*m2+m3.*m3.*m3)
s=i(k)
批注:同学建议最好先求个位,虽然是个人习惯,不过我觉得确实先求个位会比较不乱,然后就是编写的时候求个位时就忘记自己求什么了,程序写成了rem(i,100),只输出一个数,找了好半天错误。一个流畅的思维也是编程的关键呐。
例子程序将多个数据存储为向量计算,可以省去循环,这个很可取,以后编程要注意。
4.建立字符串向量,实现①取前1~5个字符 ②倒叙 ③小写字母改为大写字母 ④求小写字母个数
clc,clear
s='My Name is amber'; %开始写的是s=('My Name is amber','s'),不知道哪来的写法
s(1:5) %取前5个字符
s1=s(end:-1:1); %之前写错为s=(end:1)
%然后写的是s=s(end:1) 输出为:空的1×0 char数组,说明没有倒叙
x=find(s>='a'&s<='z'); %小写字母改为大写字母,不会找小写字母T-T,看一眼例子
s(x)=s(x)-('a'-'A') %将找出的小写字母转换为大写字母
length(x) %求小写字母个数
批注:①字符串中如果含有单引号,要用两个引号来实现例如s='I ''m amber'。②Matlab中的逻辑运算符为&(与)、|(或)、~(非),matlab中的&和&&本质是一样的,但&先计算左右两个式子的真假,再逻辑与,适用于矩阵间的逻辑运算,而&&前一个式子为假就不计算下一个式子了,效率更高,只适用于单个元素。
5.(1)产生5阶两位随机整数矩阵A。(2)产生均值为0.6,方差为0.1的5阶正态分布随机矩阵B。
100*rand(5)
0.6+sqrt(0.1)*randn(5)
批注:以上分别对应(1)(2)。注意①rand产生的是(0,1)区间均匀分布的随机矩阵,而randn产生均值为0,方差为1的标准正态分布。②μ+σx是得到均值为μ,方差为σ的平方的随机数。
6.验证魔方矩阵的主、副对角线元素之和相等。
clc,clear
A=magic(8);%产生8阶魔方矩阵
a=diag(A);
A1=fliplr(A);%将矩阵左右翻转,上下翻转也可以,这样副对角线就移到主对角线了。
b=diag(A1);
sum(a);
sum(b);
if(sum(a)==sum(b))
fprintf('same\n')
else
fprintf('no\n')
end
批注:①左右翻转和上下翻转都可以将矩阵的副对角线移到主对角线上;②matlab中输出为fprintf不是printf。
7.求3~20阶魔方矩阵的秩并绘成直方图。
clc,clear
for i=3:1:20
A=magic(i);
x(i-2)=rank(A);
end
disp(x)
hist(x)%频率直方图
bar(x)%仅仅把数据用直方图的形式展现出来
批注:①magic中无法使用向量一次求出,只能借助循环。②hist可以绘制频率直方图,而bar仅仅是把数据用直方图的形式展现出来。
8.求2~10阶希尔伯特矩阵的条件数。
clc,clear
for i=2:1:10
A=hilb(i);
x(i-1)=cond(A);
end
disp(x)
%例子中加的
format long
x'
批注:运行后,可以看到随着阶数的增加,希尔伯特矩阵的条件数不断增大,矩阵性能变差。条件数越接近1,矩阵的性能越好。(但还是不太理解矩阵的性能是刻画什么的)
来源:oschina
链接:https://my.oschina.net/u/4330260/blog/3624787