【发布时间】:2020-02-21 19:37:11
【问题描述】:
这里对编码和 Matlab 非常陌生!
我有一个元胞数组 (16*1)(1 列,16 行) 在每个单元格中,我都有一个 76*76 矩阵。
在每个矩阵中,我想删除某些行(例如 1 到 10、22 和 76)和相同的列(1 到 10、22 和 76)。
我不知道该怎么做。我已尝试阅读入门文档,但对我来说仍不清楚。我将非常感谢任何帮助和解释!
谢谢你:)
【问题讨论】:
标签: matlab matrix cell-array
这里对编码和 Matlab 非常陌生!
我有一个元胞数组 (16*1)(1 列,16 行) 在每个单元格中,我都有一个 76*76 矩阵。
在每个矩阵中,我想删除某些行(例如 1 到 10、22 和 76)和相同的列(1 到 10、22 和 76)。
我不知道该怎么做。我已尝试阅读入门文档,但对我来说仍不清楚。我将非常感谢任何帮助和解释!
谢谢你:)
【问题讨论】:
标签: matlab matrix cell-array
有两种方法可以删除元素。一种是将[]分配给要删除的行和列,另一种是选择您想要的。
%some example data
x={magic(76),magic(76)}
%First option assign []
x{1}([1:10,22,76],:)=[]
x{1}(:,[1:10,22,76])=[]
%Second option, index what you need:
%All values from 11 to 75 without 22
selector=setdiff(11:75,22)
x{2}=x{2}(selector,selector)
显然,您可以在 for 循环中调用它们,而不是硬编码的 {1} 或 {2}。
一些建议,当您有一个大小相同的矩阵单元格并且您想对每个矩阵执行相同的操作时,可能 (76,76,16) 更适合您。坚持上面的例子:
x=ones(76,76,16);
x=x(selector,selector,:);
全部在一行中完成。
【讨论】: