2016-04-08 23 views
-1
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); 

Imのクラスのための簡単な暗号化アプリケーションを書きます。私はそうするために行列を使う必要があります。私は文字列に何かを入力するユーザーを持っているが、それらを行列に入力するか、文字列を行列に変換する方法を教えてください。MATLAB、文字列から行列へのユーザ入力の取得

答えて

0
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 

これは答えとして、元の質問の後にさらなるステップを示す編集した答えです。

"MatrixA"は入力の各文字が行列内の位置に割り当てられた後に強制的に数値になる正方行列です。

暗号化の番号を処理できるようになりました。

+0

forループやソートを使って各文字を別々の行列に入れることは可能ですか?行列Aのように、それらの文字の逆行列と転置を得ることができますか? – Zipcoder

+0

はい可能です。あなたはどんなマトリックスのサイズを考えていましたか? – DeeCee

+0

私は質問に答えました。私は – Zipcoder

1

inputdlg関数はa cell array of stringを返します。あなたは、コマンドの下に使用して文字列にinputdlgの戻り値を変換することができます:

answer = answer{1} 
+0

どのように行列に入れますか? – Zipcoder

+0

MATLAB文字列は文字列のベクトルで、行列です。予想される出力データタイプは何ですか? int32データ型に変換する場合は、このコマンドx = int32(answer)を使用できます。 – hungptit

+0

はい、すべての文字を行列の独自の要素に入れたいと思っています – Zipcoder

関連する問題