MATLAB,从字符串到矩阵获取用户输入

MATLAB,从字符串到矩阵获取用户输入,matlab,matrix,input,Matlab,Matrix,Input,我正在为Im中的一个类编写一个简单的加密应用程序。我需要使用矩阵来做到这一点。我让用户在字符串中输入了一些内容,但如何让他们将其输入矩阵或将字符串转换为矩阵?inputdlg函数将返回。您可以使用以下命令将inputdlg的返回值转换为字符串: A = (32:127); S = char(A); S = reshape(S,32,3)' prompt = {'Enter a sentence you would like to Encrypt'}; dlg_title = 'Input'

我正在为Im中的一个类编写一个简单的加密应用程序。我需要使用矩阵来做到这一点。我让用户在字符串中输入了一些内容,但如何让他们将其输入矩阵或将字符串转换为矩阵?

inputdlg函数将返回。您可以使用以下命令将inputdlg的返回值转换为字符串:

A = (32:127);
S = char(A);
S = reshape(S,32,3)'



prompt = {'Enter a sentence you would like to Encrypt'};
dlg_title = 'Input';
num_lines = 1;
defaultans = {'Hello'};
answer = inputdlg(prompt,dlg_title,num_lines,defaultans);
prompt='输入要加密的句子';
dlg_标题=‘输入’;
行数=1;
defaultans={'Hello'};
回答=输入dlg(提示、dlg\u标题、num\u行、默认值);
答案=答案{1};%像hungptit说的那样把细胞变成细绳
%找出数据的平方矩阵应该有多大
对于i=1:length(答案)%it无论如何都不应该跑这么远
如果(i^2)>长度(答案)
打破
结束
结束
mat_len=i;
%预定义数的平方矩阵强制矩阵为数型
matrixA=零(mat_len,mat_len);
%迭代平方矩阵,为位置分配答案值
对于i=1:mat_len
对于j=1:mat_len

如果(((i-1)*mat_len)+j)我如何将其放入矩阵中?MATLAB字符串是一个字符向量,它是一个矩阵。您期望的输出数据类型是什么?如果要转换为int32数据类型,则可以使用此命令x=int32(应答).是的,但我希望每个角色都有自己的元素matrix@Zipcoder这就是字符数组的含义。它意味着从单元格到int32的转换是不可能的。是否可以创建一个for循环或某种排序,将每个字符放入一个单独的矩阵中?比如矩阵A,这样我可以得到这些字符的倒数和转置?是的,这是可能的。你认为矩阵的大小是多少?我重新回答了这个问题,我把代码放在下面。也许值得一个新问题,因为我不能在注释中格式化代码,但我有一个解决方案。我不能写一个新问题。
answer = answer{1}
prompt = 'Enter a sentence you would like to Encrypt';
dlg_title = 'Input';
num_lines = 1;
defaultans = {'Hello'};
answer = inputdlg(prompt,dlg_title,num_lines,defaultans);

answer = answer{1}; % Coverts cell to String like hungptit said

% find out how big the square matrix for data should be
for i = 1:length(answer) % it should never run this far anyway
   if (i^2) > length(answer) 
       break;
   end
end

mat_len = i; 

% predefine square matrix of numbers forcing matrixA to number type
matrixA = zeros(mat_len,mat_len); 

% iterate through square matrix assigning answer values to positions
for i = 1:mat_len
    for j = 1:mat_len
        if (((i-1)*mat_len)+j) <= length(answer)
            matrixA(i,j) = answer(((i-1)*mat_len)+j);
        else
            break;
        end
    end
end