亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在MATLAB中將不同長度的單元格累積到矩陣中?

如何在MATLAB中將不同長度的單元格累積到矩陣中?

慕慕森 2019-11-19 14:51:20
因此,我有一個1xN個不同長度向量的單元格數組。我想將它們附加到矩陣中,以便可以使用顯示它們imagesc。顯然,矩陣必須是最大向量的寬度。我當前的代碼如下:tcell = {[1,2,3], [1,2,3,4,5], [1,2,3,4,5,6], [1], []};lens = cellfun('length', tcell);rmat = NaN(length(tcell), max(lens));for i = 1:length(tcell)    rmat(i, 1:lens(i)) = tcell{i};end有人知道這種問題的矢量化解決方案嗎?由于MATLAB的JIT,我并不真正擔心此循環的速度。我只是想擴展自己的知識,這是我在編程中經常遇到的一個案例。
查看完整描述

1 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

這是一個cellfun與匿名函數一起使用的解決方案,首先用NaN值填充每個單元格,然后vertcat將單元格內容放入矩陣中:


tcell = {[1 2 3], [1 2 3 4 5], [1 2 3 4 5 6], [1], []};  % Sample cell 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

并輸出:


rmat =


     1     2     3   NaN   NaN   NaN

     1     2     3     4     5   NaN

     1     2     3     4     5     6

     1   NaN   NaN   NaN   NaN   NaN

   NaN   NaN   NaN   NaN   NaN   NaN


查看完整回答
反對 回復 2019-11-19
  • 1 回答
  • 0 關注
  • 1222 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號