MATLAB 矩阵(元胞数组)索引
MATLAB Matrix (Cell Array) Indexing
我刚开始学习 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
它在命令 window 上产生以下输出。
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 ]
非常感谢您的帮助。提前致谢。
这会奏效。在 '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
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
矩阵将包含您需要的所有值。
执行此操作的惯用方法是使用 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)])
我刚开始学习 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
它在命令 window 上产生以下输出。
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 ]
非常感谢您的帮助。提前致谢。
这会奏效。在 '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
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
矩阵将包含您需要的所有值。
执行此操作的惯用方法是使用 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)])