我正在尝试将具有不同大小的单元格内容的单元格数组转换为矩阵。我尝试了以下代码(来自previous question):
tcell = {[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6], [1], []}; %# Sample array
maxSize = max(cellfun(@numel,tcell)); %# Get the maximum vector size
fcn = @(x) [x nan(1,maxSize-numel(x))]; %# Create an anonymous function
rmat = cellfun(fcn,tcell,'UniformOutput',false); %# Pad each cell with NaNs
rmat = vertcat(rmat{:}) %# Vertically concatenate cells
我收到以下错误代码:
连接的矩阵的尺寸不一致。
中的错误
@(x)[x,nan(1,maxSize-numel(x))]
我认为我的单元格数组与测试示例的内容不同(请参阅tell):在MATLAB中查看时,我的单元格数组(1x31单元格)的内容是
30x1 cell 40x1 cell 37x1 cell
我是否必须先对我的单元阵列进行另一次转换?如何将我的单元阵列转换为tcell的形式?
我一直在寻找一段时间,但我还不熟悉所有的术语。解决方案可以很简单,但我还没有看到它的知识。欢迎所有投入!
答案 0 :(得分:1)
实际上你的原始代码几乎是完美的,但对于行向量。对于单元格中的列向量,您错过了分号。
maxSize = max(cellfun(@numel,tcell)); %# Get the maximum vector size
fcn = @(x) [x ; nan(1,maxSize-numel(x))]; %# semicolon here
rmat = cellfun(fcn,tcell,'UniformOutput',false); %# Pad each cell with NaNs
答案 1 :(得分:0)
由于评论员的意见,我找到了以下答案:
myFunc.prototype.newProperty = "New";