請,我需要任何人的幫助。我有許多行和兩列的單元陣列。第二列有不同長度的元素。有些是一個,兩個,三個和四個元素。我想使用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用零填充不會對最終結果做任何事情。 –