随手记1

最近做欧拉计划第八题,遇到了很多很多的问题,害,不过万能的网络太好使了,终于解决了一点点,好嗨哟

第八题代码

A='7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450';

【5】这个字符串好长啊,如何输入呢

b=textscan(A,'%c',1000);%【1】之前搜到一种解答,用了strread,但是matlab建议用textscan啊,可是直接用textcan又不对。

c=str2num(char(b))';

m1=[];n=0;

format long 【2】matlab直接保留了四位小数,但是不符合要求呀,咋整

for i=1:988【3】这里和下方的取值要对应,不然又会出现报错,超出索引

  m=c(:,i:i+12);

  M=prod(m);【4】这是一个函数,可以算出矩阵中每一个数的乘积

  if(M>n)

      n=M;

  else

      M=M;

  end

end

【1】

首先,由于要将这个字符串A分成一个个数,所以要用textscan(读或者strread(从字符串中读取格式化数据),但是从网上搜索strread的时候,会出现“不推荐使用strread,请改用textscan"。

textscan的基本语法是:

C = textscan(fid, 'format')

C = textscan(fid, 'format', N)

其中,fid是foropen命令返回的文件标识符,在这个位置是之前用到的字符串,或者是文件。format是要读取的格式,例:%d,%c……。N代表以这种格式读多少次.要注意这个函数的输出,是一个细胞数组。

C= textscan(fileID,formatSpec) 将已打开的文本文件中的数据读取到元胞数组 C

【2】

所以我们要把细胞型的数组转化为矩阵,一般转换有两种办法

1.cell2mat(a)

在这个问题中, 我们可以用c=cell2mat(b); d=str2num(c)';先把它转换为string,再用str2num

2.str2num(char(cell))

小tip:char的用法

S=char(C):C是元胞型字符数组,c中的每一个元素放置在字符数组s的行中,用cellstr可以转换回来。

S=char(x):把表示字符的非负整数x转换为字符串数组s。

S=char(t1,t2,t3…):生成字符型数组S把t1,t2,t3,...作为行,为了生成有效的矩阵自动在每个字符型数组加倍添加空格

【5】可以把长的字符串分为几行输入,用中括号[ ]将字符串括住,每一行都上单引号,除去最后一行外每一行的行尾都用…

你可能感兴趣的:(随手记1)