删除矩阵单元格中除第一个通道以外的所有通道

Deletion of all but the first channel in a cell of matrices

我有一个行单元格向量 M,每个单元格中包含矩阵。每个矩阵m(大矩阵M内的矩阵)由2个通道(列)组成,我只想使用第一个。

我考虑的方法是遍历每个 m,检查它是否有 2 个通道,如果是,则删除第二个通道。
有没有办法在 matlab 中对其进行切片?或者循环它并获得矩阵 M 因为矩阵 m 会消失。

第一个密码是:

   load('ECGdata.mat')

我有下面的。

当我双击其中一个变量时,我可以看到以下内容:

如您所见,每个单元格中每个矩阵的长度都不同。现在让我们看一个单元格:

我试图得到的循环必须检查矩阵的形状(我在这里说 python/我的意思是如果矩阵有 2 列然后删除第二列)因为一些变量数据框的矩阵包含一列(或只是一个普通列)。

在这里我只显示每个矩阵有 2 列的 SR 变量。其余变量并非如此

您不需要删除多余的"channel",您可以做的很简单:

newVar = cellfun(@(x)x(:,1), varName, 'UniformOutput', false);

其中 varNameSRVF 等(对于您加载的每个变量只需 运行 此命令一次)。

上面的代码所做的是遍历输入单元格的每个元素(在您的示例中为 Nx2 矩阵),并且 select 仅遍历第一列。然后它将所有输出存储在一个新的元胞数组中。对于具有单列的矩阵,没有任何影响 - 我们只是取回输入。

(如果代码中有错别字/错误,我提前道歉,因为我正在从我的 phone 中写这个答案并且无法测试它。如果有问题请发表评论,我明天我会尽力修复它。)