将Excel信息导入Matlab后对变量进行排序

时间:2014-10-03 09:13:43

标签: excel matlab sorting variables

你好我是第一次学习如何使用Matlab而且我被困在一项任务上。它是一个两部分的任务,第一部分是编写一个Matlab脚本并让它输出我已经完成的Excel文件。

M = {'City' 'Population'; 'Chandler' 249146; 'Gilbert' 229972; 
'Glendale' 234632; 'Mesa' 457587; 'Peoria' 162592; 
'Phoenix' 1513367; 'Scottsdale' 226918; 'Surprise' 123546;
'Tempe' 168228; 'Tucson' 526116};

M = xlswrite('largest_cities_in_arizona.xls',M)

第二部分是创建一个读取Excel文件的Matlab脚本,创建两个名为city_population和city_name的变量,然后根据总体按降序对它们进行排序。我发现了大部分问题。

[A, B] = xlsread('largest_cities_in_arizona.xls', 1, 'A2:B11');

city_population = sort(A, 'descend');

city_name = sort(B);

我遇到的问题是尝试通过city_population对city_name进行排序。导入数据时,Matlab将city_name视为10x1单元格,将city_population视为矩阵,如果我尝试根据city_population对B进行排序,则会给出尺寸错误。还有其他方法可以做到这一点吗?任何帮助或信息将不胜感激。

1 个答案:

答案 0 :(得分:1)

试试这个:

[city_population, index] = sort(A, 'descend');
city_name = B(index);

关键是使用sort的第二个输出作为索引,您应用于另一个数组以获得相同的顺序。

在你的例子中,这给出了

>> city_population
city_population =
     1513367
      526116
      457587
      249146
      234632
      229972
      226918
      168228
      162592
      123546

>> city_name
city_name = 
    'Phoenix'
    'Tucson'
    'Mesa'
    'Chandler'
    'Glendale'
    'Gilbert'
    'Scottsdale'
    'Tempe'
    'Peoria'
    'Surprise'