【问题标题】:MATLAB how to apply a function to cell arraysMATLAB如何将函数应用于元胞数组
【发布时间】:2015-09-25 07:04:44
【问题描述】:

我有以下元胞数组:

<20x2>
<32x2>
<28x2>
<30x2>

我想要做的是读入&lt;20x2&gt; 的单元格数组的row 1,一旦我进入&lt;20x2&gt;,我只想将以下函数应用于第一列。

在第一个中,我希望 C{1,1} 中的每一行 column 1 都减去 0.1。在第二个C{2,1} (&lt;32x2&gt;) 中,我希望第 1 列的每一行都减去 0.2,依此类推...

所以为了澄清,我试图从n= row number of the cell array 的单元格数组中每个子矩阵的第一列中减去n*0.1。因此,如果row 8 的元胞数组中有一个部分,则column 1 将减去8*0.1 = 0.8

我希望这个问题足够清楚,我已经尽力把它说清楚了。

提前感谢您的任何帮助/建议

尝试

First = C{1,1}(:,1);
Subtraction = First - 0.1

给我我想要的结果,但仅适用于我的单元格数组的第 1 行。

Applying function to vectors row by row 的唯一问题,因为这涉及单元格数组而不是矩阵。读取单元格数组的方面使其成为问题的不同变体,因此如果有人遇到与此问题类似的问题,则提到的“重复”问题将无济于事,尤其是像我这样的 MATLAB 知识很少

【问题讨论】:

  • 你有没有尝试过?也许使用循环?
  • 如果我只有一个 nx2 矩阵但难以读入 n 变化的元胞数组,我可以按照我的要求进行操作
  • 您需要发布一些代码以表明您已经尝试自己解决它...为什么您可以直接转到...-n*0.1;...,其中n 是您的for-loop 变量?跨度>
  • 不包括我的尝试,因为这是一项非常可悲的努力。我以为我需要一个循环。 1. 我不知道如何应用循环和 2. 我真的不知道如何调用 n 正在改变所以 matlab 读取我的整个文件
  • 不,这是不同的最终目标 :)

标签: arrays matlab function cell-array


【解决方案1】:

使您的尝试适应循环非常容易:

for n = 1:size(c,1)
    C{n,1}(:,1) = C{n,1}(:,1) - n*0.1;
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 2023-03-03
    相关资源
    最近更新 更多