我有一个Excel电子表格,我希望其行随机洗牌并在Matlab中进一步使用。为此,我正在将XLS读入单元格数组,将随机数生成到一列中,然后按该列进行排序。但是,由于变量类型冲突,这被证明是有问题的。我使用的代码是:
[num, txt, M] = xlsread(fileName);
for row=2:row_N % generate random numbers in the D column
M(row,4) = num2cell(rand);
end
M = sortrows(M,4);
这导致我的矩阵看起来像这样:
由于D列包含数字,而其他列中有文本,因此无法进行排序(它说“单元格元素必须是字符数组。”)。
我尝试了在数字变量和单元格变量之间进行各种转换,还尝试使用'readtable'而不是'xlsread'-但始终存在问题,以至于我无法解决此冲突。有什么建议么?使用Matlab 2016a。
答案 0 :(得分:1)
如果我了解您的目标,那么我认为它可以实现。您可能会从importdata获得不同的字段名称,并且将不得不更改这些字段名称,但是假设您没有这样做,则应该将其覆盖。
% import the data
impdata=importdata('temp.xlsx');
% get rid of the headers
oldcellarray=impdata.textdata(2:end,:);
%resort the rows in a random order
newcellarray=oldcellarray(randperm(size(oldcellarray,1)),:);