alphabet = b"ARNDCQEGHILKMFPSTWYVXOUBZ"
时间: 2023-06-20 07:07:31 浏览: 44
这是一个包含氨基酸和其他生物分子的26个字母的字母表,其中每个字母代表一个氨基酸或其他相关分子的缩写。其中:
- A:丙氨酸
- R:精氨酸
- N:天冬酰胺
- D:天冬氨酸
- C:半胱氨酸
- Q:谷氨酰胺
- E:谷氨酸
- G:甘氨酸
- H:组氨酸
- I:异亮氨酸
- L:亮氨酸
- K:赖氨酸
- M:甲硫氨酸
- F:苯丙氨酸
- P:脯氨酸
- S:丝氨酸
- T:苏氨酸
- W:色氨酸
- Y:酪氨酸
- V:缬氨酸
- X:未知氨基酸
- O:类蛋白氨基酸
- U:硒代甲硫氨酸
- B:天冬酰胺或天冬氨酸
- Z:谷氨酰胺或谷氨酸
相关问题
优化代码: % 读取文本文件中的内容 text = fileread('123.txt'); % 清除文本中的标点符号和空格 text = regexprep(text, '[^\w\s]' , ''); text = regexprep(text, '\s+', ''); % 定义字母表 alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; % 初始化矩阵 mat = zeros(numel(alphabet)); % 计算每对相邻字母αβ出现频率 for k = 1:numel(text)-1 i = find(alphabet==text(k));%找出α的行数 j = find(alphabet==text(k+1));%找出β的列数 mat(i,j) = mat(i,j) + 1;%相邻字母αβ在概率矩阵的位置 end % 转换成概率矩阵,采用条件概率公式p(β|α)=p(αβ)/p(α) mats=sum(mat,2);%为了计算在前字母α为同一字母的情况下出现的频率 mats(mats==0)=1;%为了防止出现除数为0导致的NaN的现象,将sum为0的命名为不为0的数 mat = mat./mats; mat(mat == 0 ) = 1 ; % 计算概率矩阵的熵 entropy = -sum(sum(mat .* log2(mat))); % 显示结果 fprintf('信息熵:%.4f bits/symbol\n', entropy);
可以对代码进行如下优化:
1. 将读取文本文件中的内容和清除文本中的标点符号和空格的操作合并为一行代码:
```
text = regexprep(fileread('123.txt'), '[^\w\s]', '');
```
2. 将字母表的定义从字符串改为字符数组:
```
alphabet = ['a':'z', 'A':'Z'];
```
3. 在计算每对相邻字母αβ出现频率时,可以使用矩阵运算代替循环:
```
[i, j] = find(ismember(alphabet, text(1:end-1)') & ismember(alphabet, text(2:end)'));
mat = accumarray([i, j], 1, [length(alphabet), length(alphabet)]);
```
4. 在计算概率矩阵时,可以使用 bsxfun 函数实现矩阵除法:
```
mats = sum(mat, 2);
mat = bsxfun(@rdivide, mat, mats);
```
5. 在计算概率矩阵的熵时,可以使用矩阵运算代替双重循环:
```
entropy = -sum(mat(:) .* log2(mat(:) + (mat(:) == 0)));
```
优化后的代码如下:
```
text = regexprep(fileread('123.txt'), '[^\w\s]', '');
alphabet = ['a':'z', 'A':'Z'];
[i, j] = find(ismember(alphabet, text(1:end-1)') & ismember(alphabet, text(2:end)'));
mat = accumarray([i, j], 1, [length(alphabet), length(alphabet)]);
mats = sum(mat, 2);
mat = bsxfun(@rdivide, mat, mats);
mat(mat == 0) = 1;
entropy = -sum(mat(:) .* log2(mat(:) + (mat(:) == 0)));
fprintf('信息熵:%.4f bits/symbol\n', entropy);
```
ffx = pyffx.String(key, alphabet='0123456789', length=len(format_str))encrypted_phone = ffx.encrypt(format_str.format('138', '0010', '1234'), algorithm='ff1', radix=10)报错KeyError: '*'
这个错误可能是由于在使用字符串格式化时,使用了未定义的参数导致的。在这个具体的错误信息中,'*' 表示使用了一个未定义的参数名,可能是在 format_str 字符串中使用了类似 { * } 的语法。请检查一下 format_str 字符串中的格式化语法,确保所有的参数名都正确定义和使用。如果问题仍然存在,请提供更多的代码或上下文信息,以便更好地帮助你解决问题。