排序杀死程序:MATLAB

时间:2015-01-12 10:45:52

标签: arrays matlab sorting

我编写了以下程序,以便从用户那里获取一个字符串数组,对它们进行排序,然后向用户显示已排序的数组。

但似乎sort函数完全杀死了程序。因为第二个msgbox永远不会出现。

另请注意,如果我在第一次显示时取消inputdlg,则会显示两个消息框。

strings = {};
count = 1;
while(1)
    prompt = {strcat('Enter the ', num2str(count), '# String')};
    temp = inputdlg(prompt,'Input String',1,{'String'});
    if isempty(temp)
        break
    end   
    strings{count} = temp;
    count = count + 1;
end
msgbox('Processing....');
sorted = sort(strings); % The program stops executing on this point
msgbox('Operation Completed');

那么为什么程序永远不会执行最后一行?谢谢。

1 个答案:

答案 0 :(得分:4)

变量temp是包含输入字符串的1x1单元格。通过分配strings{count} = tempstrings的每个条目都是1x1单元格。如果您查看工作区中的变量,您将能够验证它。您只能通过调用

来访问输入的字符串
strings{count} = temp{1};

通过此修改,strings单元格包含字符串而不包含单元格。现在,您将能够使用sort函数对单元格进行排序,并且您的代码应该按预期工作。