我目前正在优化一些代码,并且无法找到比MATLAB更快的方法cell2mat
.目前,cell2mat
我的代码中的多次使用代表了超过15%的处理时间.
我认为它可以比这更快,因为我知道我将传递给函数的单元格数组的结构.
基本上,单元阵列是NxN
,其中:
左上方的(N-1)x(N-1)
块在每个单元格中包含6x6
双矩阵
右下角的(N,N)
单元格是MxM
双矩阵.
其他单元格具有连接的正确尺寸,即:
细胞(1:(N-1),N)
是6xM
双基质,细胞(N,1:(N-1))
是Mx6
双基质.(图像添加用于清楚起见,有N=207
和M=300
)
由于单元格将始终填充双精度并且始终为2维,因此我只使用了一小段cell2mat
代码,即:
function m = myCell2Mat(c)
rows = size(c,1);
m = cell(rows,1);
% Concatenate one dim first
for n=1:rows
m{n} = cat(2,c{n,:});% 73% of the time spent here
end
% Now concatenate the single column of cells into a matrix
m = cat(1,m{:});% 25.2% …
Run Code Online (Sandbox Code Playgroud) 这不是一个问题,因为我有答案,但由于我找不到相关的来源,我会在这里发布问题以及答案,以防你感兴趣.(如果我忘记了我是怎么做的,也能够再次找到它).
我在查看一些代码时遇到了一个问题.代码中没有解释大量的变量,每次我想知道变量的含义我必须在数据文件中查看和/或从代码中完成的操作中猜出它们的含义.
没必要说这是非常耗时的,我搜索了减少时间的最佳方法.
首先,我将关于变量的所有解释放在注释中,问题是它在脚本中添加了一个(巨大的!)行.
我还在MATLAB中使用"在编辑模式下启用数据提示".当您将鼠标悬停在已经评估过的MATLAB变量名称上时,它会根据所有维度和至少其第一个值给出它的大小,这样就可以更容易地了解您正在操作的对象.(见下图)
我想到的自然想法如下:是否有可能让MATLAB在数据提示中显示更多自定义信息?
答案是肯定的!
请参阅答案中的代码