将Excel信息导入Matlab后对variables进行sorting

你好,我正在学习如何使用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) 

第二部分是创build一个读取Excel文件的Matlab脚本,创build两个名为city_population和city_name的variables,然后根据总体以降序对两个variables进行sorting。 我大部分都明白了。

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

我遇到的问题是试图通过city_population对city_name进行sorting。 在导入数据时,Matlab会将city_name作为10×1单元格和city_population作为matrix,如果我尝试根据city_population对B进行sorting,则会给出尺寸错误。 有没有其他的方法来做到这一点? 任何帮助或信息将不胜感激。

尝试这个:

 [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'