Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中的列排序_Matlab - Fatal编程技术网

Matlab中的列排序

Matlab中的列排序,matlab,Matlab,我使用textscan导入了两列数据。数据如下所示,U为未检测,D为检测 mydata= .51 U .57 D .48 U .47 D my data = [4x1 double] [4x1 char] 我想按第一列对数据进行排序,因此数据如下所示 .47 D .48 U .51 U .57 D 我希望保留单元格结构,以便以下分配逻辑值的命令仍然有效: c = zeros(size(mydata,1),1); % preallocate empty matrix

我使用textscan导入了两列数据。数据如下所示,U未检测D检测

mydata=

.51 U
.57 D
.48 U
.47 D

 my data = [4x1 double]    [4x1 char]
我想按第一列对数据进行排序,因此数据如下所示

.47  D
.48  U
.51  U    
.57  D
我希望保留单元格结构,以便以下分配逻辑值的命令仍然有效:

c = zeros(size(mydata,1),1); % preallocate empty matrix 

c = mydata{2} == 'U';
for i = 1:size(mydata,1)
      curValue = mydata{i,2};
      data{i,3} =  ~isempty(curValue) && ischar(curValue) && strcmp(curValue ,'U');
end
我读过sortrows,但该函数用于对只包含数字的矩阵进行排序

是否有人有一种解决方案可以对混合了数字和字符的数组进行排序。

您可以按一个向量排序,然后将排序索引应用于另一个向量

[mydata{1},idx] = sort(mydata{1});
mydata{2} =  mydata{2}(idx);

我不认为可以直接对单元格数组进行排序,因为每个单元格都被视为不同的“实体”。您始终可以对数字进行排序,使用索引对字符进行排序,然后将其放回单元格数组:

nums = mydata{1};
chars = mydata{2};
[~, ind] = sort(nums);
sortednums = nums(ind);
sortedchars = chars(ind);
mydata{1} = sortednums;
mydata{2} = sortedchars;

哦,那比我的好。:)你可以用
mydata{1}
替换
cell2mat(mydata(:,1)
。@3electrologos:在我看到你的答案和评论之前发现了我的错误并更正了。我不知怎的错过了问题中现有的数据结构。