使用一个元胞数组创建另一个元胞数组

Using one cell array to create another

我正在 运行 进行一个实验,我有 5 个不同的条件,参与者在每个试验中给出 0-9 的响应。 作为 运行 实验的结果,我得到了两个元胞数组——一个包含每个试验的条件,另一个包含参与者对该试验的反应。 例如这个(10 次试验,每种情况 2 次):

condition =

 2     1     4     4     2     5     3     1     3     5


ratings =

 4     2     8     7     4     9     5     1     3     8

我想要 运行 回归,因此我希望将条件转换为实际代表自变量的值,即两幅图像之间的距离(以像素为单位)。

级别 1 = 580 像素, 2=480, 3=380, 4=280, 5=180

如果这是一个非常明显的问题,我很抱歉,但是如何从我的 'condition' 元胞数组中轻松创建一个新的元胞数组 - 'distance in pixels'? 我是 MATLAB 和编程的新手,如果我错过了任何重要的事情,我很抱歉,我会尽可能多地尝试编辑这个问题以回应建议。 我正在 运行 在 windows 上使用 psychtoolbox 使用 MATLAB。

有几种方法。

首先,您可以使用数学关系:

condition = [2, 1, 4, 4, 2, 5, 3, 1, 3, 5];
B = 680 - condition.*100

哪个returns:

B =

   480   580   280   280   480   180   380   580   380   180

其次,您可以利用 MATLAB 的 linear indexing 进行查找 table:

condition = [2, 1, 4, 4, 2, 5, 3, 1, 3, 5];
level = [580, 480, 380, 280, 180];
B2 = level(condition)

哪个returns:

B2 =

   480   580   280   280   480   180   380   580   380   180

我在没有使用元胞数组的情况下编写了这些内容,但如果您出于某种原因必须使用元胞数组,则可以在需要时使用 cell2mat and num2cell/mat2cell