行列N * 123456をセルのセルに変更したい。各サブセルにはN * L行列が含まれている
例えば:
matrixSize= 50*123456
N=50
L=100
出力は1 * 1235セルになり、各セルには50 * L行列があります(最後のセルには50 * 56しかありません)
matlabに関数mat2cellがあることを知っています:
Output = mat2cell(x, [50], [100,100,100,......56])
しかし、それは直感的な解決策には聞こえません。
それで、良い解決策はありますか?
私があなたを正しく理解しているなら、あなたの行列が示されていると仮定するとm
、これはあなたが望んでいたことです:
a=num2cell(reshape(m(:,1:size(m,2)-mod(size(m,2),L)),N*L,[]),1);
a=cellfun(@(n) reshape(n,N,L), a,'UniformOutput',false);
a{end+1}=m(:,end-mod(size(m,2),L)+1:end);
(必要に応じて、これを1行に短縮できます)...最小限の数でテストしてみましょう。
m=rand(50,334);
N=50;
L=100;
収量:
a =
[50x100 double] [50x100 double] [50x100 double] [50x34 double]
形状変更の正確な寸法を確認しなかったため、形状変更...,[],N*L)
などが必要になる場合があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加