MATLAB代码无法正常工作。尝试将输入存储到数组

时间:2016-04-19 20:11:41

标签: matlab

我写了两个函数,第一个是加密

prompt = 'Enter a sentence you would like to Encrypt';
dlg_title = 'Input';
num_lines = 5;
defaultans = {'Hello'};
answer = inputdlg(prompt,dlg_title,num_lines,defaultans);

answer = answer{1};




% 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(1)=matrixA(1)*10
matrixA'

这将ASCII代码存储到数组矩阵A中,并执行简单的矩阵运算来隐藏消息。 例如Hello就是

   720   108     0
   101   111     0
   108     0     0

第二个函数是我的问题所在,它被用来获取矩阵的输入并将其转换回消息。 720转为72,即H.该函数从已存储的matrixA读取。

prompt = 'Enter a code you would like to Decrypt';
dlg_title = 'Input';
num_lines = 5;
defaultans = {''};
answer = inputdlg(prompt,dlg_title,num_lines,defaultans);

answer = answer{1};



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''
matrixA(1)=matrixA(1)/10
m2=matrixA.'; result=char(m2(:)).'; 
result

这是不起作用的代码。如何让它读取数字矩阵并将它们转换回字符。

0 个答案:

没有答案