近期在干啥

差不多有24天没写推送了。。。。一直干活

,期间好几晚都没回宿舍,太惨了,净在干些没啥用的事情

虽然不想干,但确实学到了一些东西(大半个月没找工作了,更想找工作来着

)。

MATLAB中,如何对cell数组排序?

问题背景

如下图所示,我有一个 1 *n 的cell数组,这个cell的每一个元素是一个 1 *2 的向量,表示一个坐标点(x, y):

现在要根据坐标的 x 值对这个 cell 数组进行排序!

解决办法

我本来以为可以和C++ STL中的sort算法一样 指定一下排序方法就行。但是查看MATLAB的帮助文档,发现他们的sort函数没法用在我这个cell数组上!

直接放解决办法吧:

先把cell数组(coors)中的每个小单元的第一个元素拿出来,就是把所有的x坐标拿出来,放到一个行或者列向量中,记为 x 。

[~, ind] = sort(x); 获取排序后的索引(把这些索引对应的元素排起来就是有序的)。还是看MathWorks给的解释吧:

[B,I] = sort(_) also returns a collection of index vectors for any of the previous syntaxes. I is the same size as A and describes the arrangement of the elements of A into B along the sorted dimension. For example, if A is a vector, then B = A(I).

coors = coors(ind); 这样就对coors这个cell数组排序了

clc

clear

%% 原来的 待排序的 cell(保存了坐标点的cell数组)

coors = {[180, 37], [60, 39], [120, 38], [0, 40], [420, 32], [300, 35]};

disp('Source: ')

dispCoorCell(coors)

%% 获取每个小cell的第一个元素的值(即获取所有的x坐标)

x = zeros(1, length(coors));

for i = 1 : length(coors)

x(i) = coors{i}(1);

end

%% 对x坐标排序,获取排序索引

[~, ind] = sort(x);

%% 对这个cell数组排序

coors = coors(ind);

disp('Sorted: ')

dispCoorCell(coors)

function dispCoorCell(coors)

x = zeros(1, length(coors));

y = zeros(1, length(coors));

for i = 1 : length(coors)

x(i) = coors{i}(1);

y(i) = coors{i}(2);

end

disp(x)

disp(y)

end

输出:

C++中,类似的问题怎么实现

我就直接写代码了,也没啥可比性。实际就是创建一个:

vector> coors;

这样就类似于上面MATLAB中的那个cell了。

#include

#include

#include  /// for pair

#include

#include

using namespace std;

using COOR = pair;

/// 定义 COOR 的输出

ostream& operator<& c)

{

os <

return os;

}

/// 定义比较函数,根据 x 的值比较

bool MySortFunc(const COOR& c1, const COOR& c2){

return c1.first

}

int main(){

vector coors{{180, 37},

{60, 39},

{120, 38},

{0, 40},

{420, 32},

{300, 35}};

/// 打印 原始坐标

for (auto ele : coors)

cout <

cout <

/// 排序 坐标vector

sort(coors.begin(), coors.end(), MySortFunc);

/// 打印 排序后的vector

for (auto ele : coors)

cout <

cout <

}

输出

matlab 排序 cell,MATLAB中对cell数组排序相关推荐

  1. matlab 排序点,matlab如何进行排序?

    来自SORT的MATLAB文档:If A has complex entries r and s, sort orders them according to the following rule: ...

  2. matlab strcmp cell,matlab中strcmp函数的使用

    strcmp是用于做字符串比较的函数,按复杂程度及比较对像的不同主要可以分为以下三种情况: 1. TF=strcmp(s1,s2); s1和s2是字符串,比如:s1='hello',s2='matla ...

  3. MATLAB中的cell类型(简介)

    在上一节的小短片中提到了cell函数,我在这简单介绍一点点cell函数吧,以免有不懂的小伙伴: cell是matlab中的一种数据类型,用大括号定义,括号里可以是任意类型的数据或矩阵. 然后关于cel ...

  4. matlab中的cellstr的用法,matlab中的cell array, cellstr()和char()的用法

    Cell Array的定义:顾名思义,Cell Array是由Cell构成的Array.Cell可以包含各种数据类型.可以使用()取cell array的子集,使用{}取cell array指定位置的 ...

  5. cell matlab三维图,Matlab三维数据画图和等高线数据提取

    1 目的 将4组三维数据,每组数据画散点图(fig1),拟合出一个曲面(fig2),并将特定Z值的等高线投影到XY平面(fig3). 2 主要函数 scatter3( ) 三维散点图 scatter3 ...

  6. Matlab:清除表中的杂乱数据和缺失数据

    Matlab:清除表中的杂乱数据和缺失数据 加载样本数据 汇总表 查找具有缺失值的行 替换缺失值指示符 删除具有缺失值的行 组织数据 此示例演示了如何查找.清除和删除具有缺失数据的行. 加载样本数据 ...

  7. matlab括号区别,matlab中各种括号(),[],与{}的区别与认识

    matlab中各种括号(),[],与{}的区别与认识 发布时间:2018-06-04 10:37, 浏览次数:469 , 标签: matlab 原文 在matlab中,常常会遇到(),[],和{},这 ...

  8. 设置matlab图像线框,matlab在图像中画长方形(框)

    function [state,result]=draw_rect(data,pointAll,windSize,showOrNot) % 函数调用:[state,result]=draw_rect( ...

  9. matlab从csv文件中读取时间转换异常

    matlab 从 csv 文件中读取时间转换异常 最近一段时间一直在研究 matlab 读取各种数据,自以为文件读取的水平还行.可是,昨天,帮朋友读取一个 csv 文件时,时间转换却让我感到非常奇怪. ...

  10. Matlab数组创建、数组寻址、数组排序、数组检测、数组结构

    Matlab数组创建.数组寻址.数组排序.数组检测.数组结构 一.数组创建 1.一维数组的创建 P43 2.二维数组的创建 P45 二.数组寻址 1.一维数组寻址 P46 2.二维数组寻址 P49 三 ...

最新文章

  1. 阈值Java_OpenCV简单阈值
  2. SharePoint Add-in Model (App Model) 介绍 – 概念、托管方式、开发语言
  3. 深度学习(十四)——Softmax详解, 目标检测, RCNN
  4. 前端学习(3027):vue+element今日头条管理-关于图标的处理
  5. UWP ListView 绑定 单击 选中项 颜色
  6. pandas 字段操作
  7. 排序算法java快速排序_快速排序算法--Java实现
  8. Java的注解和反射
  9. DB2 客户端下载地址
  10. android开发用什么字体,移动端web app和页面开发使用什么字体?微软雅黑?
  11. for循环:100以内奇数之和
  12. CMYK to RGB
  13. 网易邮箱账号注册twitter开发者api权限,无法收到确认邮件
  14. java孙正英_JavaSE23-函数式接口Stream流
  15. 打工能实现财富自由吗?--互联网老辛的思考
  16. [研一上]人脸属性迁移文献梳理(1)
  17. matlab里vSAS,科学网—【MATLAB】saveas和print保存图片的格式 - 叶瑞杰的博文
  18. sitemap-php生成网站地图
  19. 高等代数 :2 行列式
  20. 什么是SQL注入式攻击 如何防范

热门文章

  1. 计算机基础考试在线搜题,计算机基础考试题库 (含答案).doc
  2. 交通银行PHP代码,交通银行国际汇款代码 交通银行swift代码查询
  3. 矩阵键盘mega16 c语言程序,mega16单片机科学计算器程序源代码
  4. 收货地址列表html,收货地址.html
  5. Subclipse更新地址
  6. 【计算机网络】谢希仁笔记 数据链路层
  7. 史上最新最全面的java大数据学习路线(新手小白必看版本)
  8. android的歌词播放,android手机音乐播放器实现歌词同步
  9. [Qualcomm][MSM8937] MSM89XX平台上加载modem固件失败
  10. paraview启动失败:failed to get wglChoosePixelFormatARB