如何使用 Matlab 在 for 循环内使用捕获氨基酸频率?

How to use capture amino acid frequencies inside a for loop using Matlab?

我有一个简单的代码,它捕获多序列比对的每一列的氨基酸频率并将其存储在矩阵中。我有一个名为 amino 的载体,它存储不同的氨基酸类型:

amino=['A','R','N','D','C','Q','E','G','H','I','L','K','M','F','P','S','T','W','Y','V','Gaps'] 

我正在使用 Matlab 的内置函数来捕获每个元素的频率:

aacount(optimal(:,2),'Gaps',true).A % return the frequency of A in 2nd column

我想做的是使用 amino 向量索引获得相同的输出。像这样:

aacount(optimal(:,2),'Gaps',true).index(1)

这种方法会产生以下错误:

'Reference to non-existent field'.

谁能帮我解决这个问题?

在这种情况下,您可以使用动态字段引用 (.())。以您的示例为基础,以下 returns 从 aacount() 获得的丙氨酸(氨基酸 'A')的频率:

aacount(optimal(:,2),'Gaps',true).(amino(1))