【问题标题】:MATLAB Matrix (Cell Array) IndexingMATLAB 矩阵(元胞数组)索引
【发布时间】:2015-05-29 12:55:37
【问题描述】:

我刚开始学习 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 ] 

您的帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: matlab for-loop matrix indexing cell


    【解决方案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)])
    

    【讨论】:

    • 非常感谢 knedlsepp 先生。
    【解决方案2】:

    这会奏效。在'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
    

    【讨论】:

    • 非常感谢萨尔瓦多先生
    【解决方案3】:
    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 矩阵将包含您需要的所有值。

    【讨论】:

    • 非常感谢 JNY Ranger 先生和桑迪先生
    猜你喜欢
    • 2015-07-29
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2021-07-08
    • 2014-11-17
    • 2011-12-20
    • 1970-01-01
    • 2015-05-12
    相关资源
    最近更新 更多