• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Matlab练习1

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

操作系统: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,矩阵的性能越好。(但还是不太理解矩阵的性能是刻画什么的)


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi 中 paramstr 的用法发布时间:2022-07-18
下一篇:
delphi编译错误信息发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap