请,我需要任何人的帮助。我有许多行和两列的单元阵列。第二列有不同长度的元素。有些是一个,两个,三个和四个元素。我想使用cell2mat将第2列中的这些元素从单元格转换为双精度值并将其存储在新变量中。我一直在遇到这个错误“赋值有更多非单实例rhs维度比非单实例下标”。我已经尝试了很多次来解决这个问题,但我没有解决方案。谁能帮忙?我的代码可以在下面看到。索引到单元阵列
for i = 1:length(p)
ps(i,:) = cell2mat(p{i,1}(1,2))
end
请,我需要任何人的帮助。我有许多行和两列的单元阵列。第二列有不同长度的元素。有些是一个,两个,三个和四个元素。我想使用cell2mat将第2列中的这些元素从单元格转换为双精度值并将其存储在新变量中。我一直在遇到这个错误“赋值有更多非单实例rhs维度比非单实例下标”。我已经尝试了很多次来解决这个问题,但我没有解决方案。谁能帮忙?我的代码可以在下面看到。索引到单元阵列
for i = 1:length(p)
ps(i,:) = cell2mat(p{i,1}(1,2))
end
你需要指定列范围(明确的)输入数据和MATLAB将自动扩展ps
适当地满足您的数据(在空单元格用零填充);
for k = 1:numel(p)
data = cell2mat(p{k,1}(1,2));
ps(k, 1:numel(data)) = data;
end
显然,这有一定的性能问题,因为你与每次循环改变ps
大小。
如果你愿意,你可以像这样的东西
allData = cellfun(@(x)cell2mat(x(1,2)), p(:,1), 'uniform', 0);
ps = zeros(numel(allData), max(cellfun(@numel, allData)));
当使用上面的代码运行数据时,我收到此错误“索引超出矩阵尺寸”。 –
@ K.Sante哪一行产生错误?它建模在你提供的输入之后,所以可能是'p'的条目不需要至少有1行和2列(如你在文章中假设的那样) – Suever
这里代码产生错误,data = cell2mat(P {K,1}(1,2));.谢谢。 –
矩阵必须有固定的长度和宽度,如果你已经在你的第二个柱变长预分配
ps
,你要垫具有零点的元素的列很少? – GameOfThrows用零填充不会对最终结果做任何事情。 –