MATLAB:从选定的矩阵元素构造矩阵

MATLAB:从选定的矩阵元素构造矩阵,matlab,Matlab,我有一个3x3x3矩阵,其中包含我想要提取的一组特定元素。但是,我希望在选择元素后,这些元素在矩阵中排序。例如: a(1,:,:)=1*[1 2 3; 4 5 6; 7 8 9]; a(2,:,:)=2*[1 2 3; 4 5 6; 7 8 9]; a(3,:,:)=3*[1 2 3; 4 5 6; 7 8 9]; a(a>1.0) 条件a(a>1.0)给了我一个元素向量,但是有没有办法按照它们的原始顺序在矩阵中对它们进行排序?对于不满足条件的元素,您希望如何处理 为了简单起见,您可以

我有一个3x3x3矩阵,其中包含我想要提取的一组特定元素。但是,我希望在选择元素后,这些元素在矩阵中排序。例如:

a(1,:,:)=1*[1 2 3; 4 5 6; 7 8 9];
a(2,:,:)=2*[1 2 3; 4 5 6; 7 8 9];
a(3,:,:)=3*[1 2 3; 4 5 6; 7 8 9];

a(a>1.0)

条件
a(a>1.0)
给了我一个元素向量,但是有没有办法按照它们的原始顺序在矩阵中对它们进行排序?

对于不满足条件的元素,您希望如何处理


为了简单起见,您可以执行类似于
a(a假设二维矩阵的操作:

a = [1 2 3; ...
     4 5 6];
让我们只取偶数值,并保持其原始形状:

您可能需要:

  2
4   6
然而,在矩阵的世界里,有没有这样一个矩阵是空的?是的,一个稀疏矩阵。但是,你必须注意,稀疏矩阵是用0填充的,而不仅仅是缺失的

因此,我的建议是用
NaN

b = a; % just make a duplicate
b(mod(b, 2) == 1) = nan
b =
    nan    2    nan
      4  nan      6    
你如何定义它们的“原始”顺序?想要一个任意的矩阵是行不通的,矩阵必须是矩形的,你没有办法保证这一点。做
a(a>1.0)
将以列主顺序返回向量,这意味着返回的元素将通过从上到下、从左到右扫掠,从
a
读取满足此条件的任何值,然后进入每个片段,仍然保持该顺序。如果这不是您想要的顺序,请将您的帖子编辑为explicitly说明您希望这些显示的顺序。是否正在查找
(a>1.0)。*a
b = a; % just make a duplicate
b(mod(b, 2) == 1) = nan
b =
    nan    2    nan
      4  nan      6