2017-02-02 2 views
1

Ich habe Zellenfeld:divide Zellenfeld in Gruppen Matlab

M = cell(5,3); 

M{1,1} = ['+' '-' '-'; '+' '+' '+'; '-' '-' '+']; 
M{2,1} = ['+' '-' '-'; '+' '+' '+'; '+' '+' '+']; 
M{3,1} = ['+' '-' '-'; '+' '+' '+'; '+' '+' '+']; 
M{4,1} = ['+' '-' '-'; '+' '+' '+'; '-' '-' '+']; 
M{5,1} = ['+' '-' '-'; '-' '+' '-'; '-' '-' '+']; 

M{1,2} = ['+' '0' '-'; '+' '+' '+'; '-' '-' '+']; 
M{2,2} = ['+' '0' '-'; '+' '+' '+'; '0' '+' '+']; 
M{3,2} = ['+' '0' '-'; '0' '+' '+'; '+' '+' '+']; 
M{4,2} = ['+' '-' '-'; '+' '+' '+'; '0' '-' '+']; 
M{5,2} = ['+' '-' '-'; '-' '0' '-'; '0' '-' '+']; 

M{1,3} = 1; 
M{2,3} = 3; 
M{3,3} = 7; 
M{4,3} = 25; 
M{5,3} = 33; 

I bis Gruppe benötigen, um alle Reihen von M nach Gleichheit von Matrizen aus der ersten Spalte. So haben drei neue kleinere Zellenanordnungen M1, M2 und M3:

M1{1,1} = M{1,1}; 
M1{2,1} = M{4,1}; 
M1{1,2} = M{1,2}; 
M1{2,2} = M{4,2}; 
M1{1,3} = M{1,3}; 
M1{2,3} = M{4,3}; 

M2{1,1} = M{2,1}; 
M2{2,1} = M{3,1}; 
M2{1,2} = M{2,2}; 
M2{2,2} = M{3,2}; 
M2{1,3} = M{2,3}; 
M2{2,3} = M{3,3}; 


M3{1,1} = M{5,1}; 
M3{1,2} = M{5,2}; 
M3{1,3} = M{5,3}; 

Was möglicher Weg ist, es zu tun?

+2

Sie benötigen eine längere Beschreibung von dem, was Sie benötigen, und ein [mcve]. Lesen Sie auch [ask] –

+0

Können Sie einige Daten zeigen Beispiel: Welche Daten haben Sie und was wollen Sie erreichen? –

Antwort

0

Sie können folgendes tun:

MM = 
    {2x3 cell} 
    {2x3 cell} 
    {1x3 cell} 

wo MM{k} wie Ihr Mk (z MM(1) Ihre M1 ist):

% collect all different strings from the first column in M: 
str = cellfun(@(x) x(:).', M(:,1),'UniformOutput',false); 
% find all unique strings, and their indecies: 
[ustr,~,ic] = unique(str); 
% initialize new cell array: 
MM = cell(numel(ustr),1); 
% fill the new array by the corresponding rows in M for each unique string 
for k = 1:numel(ustr) 
    MM(k) = {M(ic==k,:)}; 
end 

Diese MM in einem Zellenfeld führen wird. Abgesehen davon, dass es sich um einen allgemeineren Weg zur Lösung dieses Problems handelt, ist es besser, alle resultierenden Zellenarrays in einer indizierten Variablen zu packen, anstatt viele Variablen in Ihrem Arbeitsbereich zu haben.

Verwandte Themen