MATLAB矩阵(单元阵列)索引

时间:2015-03-25 17:38:08

标签: matlab for-loop matrix indexing cell

我刚开始学习MATLAB。  请在下面找到我的代码

m= ['A','B','C'];
cs=size(m,2);
for i=1:cs
    for j=1:cs

            if i~=j
             s1=(m(i));s2=',';s3=(m(j));
                 s=strcat(s1,s2,s3);
                     disp(s);
        end    
    end
end

它在命令窗口中生成以下输出。

A,B
A,C
B,A
B,C
C,A
C,B

但是,我想将所有输出包装成单个矩阵(或单元阵列),让我们说new_M。 因此new_M的值应包含上述所有值,如下所示。

new_M (6,1) =
[ A,B 
A,C
B,A
B,C
C,A
C,B ] 

您的帮助将受到高度赞赏。提前谢谢。

3 个答案:

答案 0 :(得分:1)

这会奏效。在' c'你会找到值

    m= ['A','B','C'];
cs=size(m,2);
c = cell(6,1)
t = 1;
for i=1:cs
    for j=1:cs

            if i~=j
             s1=(m(i));s2=',';s3=(m(j));
                 s=strcat(s1,s2,s3);
                 disp(s)
                 c{t} = s;
                 t=t+1;
        end    
    end
end

答案 1 :(得分:1)

m= ['A','B','C'];
cs=size(m,2);
new_M = [];
for i=1:cs
    for j=1:cs
        if i~=j
         s1=(m(i));s2=',';s3=(m(j));
         s=strcat(s1,s2,s3);
         new_M = [new_M;s];
        end    
   end
end

new_M矩阵将包含您需要的所有值。

答案 2 :(得分:1)

执行此操作的惯用方法是使用nchoosek获取所需的索引,然后使用线性索引:

m = ['A','B','C'] %// For a char array OR
m = {'A','B','C'} %// For a cell array
I = nchoosek(1:numel(m), 2)
new_M = m([I; I(:,end:-1:1)])