将单个单元格中的值转换为矩阵

时间:2018-04-26 08:04:12

标签: matlab

我正在尝试创建一个小脚本,允许用户从头开始创建新矩阵(10x8),稍后将用于双线性插值。

目前,我执行此操作的方法是在弹出框中使用带有10行的prompt函数。然后,用户将为他们想要的每一行输入8个值。 这将输出一个10x1单元格,其值在其中。然后这个10x1单元需要转换为10x8矩阵

以下是我当前代码的简化示例(5x3)矩阵构思。

用户输入;

User Data Input

输入数据后,我已尝试让Matlab将这些数字转换为5x3矩阵,例如

1 2 3

4 5 6

7 8 9

1 5 9

7 5 3

使用此代码

prompt = {'Enter the first row values','Enter the second row values','Enter the third row values'...
           'Enter the forth row values', 'Enter the fifth row values'}%, 'Entre the sixth row values'...
         %'Enter the seventh row values', 'Enter the eighth row values', 'Enter the nineth row values' ...
         %'Enter the tenth row values'};
     title = ' bi-linear interpolation grid ';
     dims = [1 50]; 

answer = inputdlg(prompt,title,dims); 

bi_linear_interpolation_grid = cell2mat(answer);

然而这会产生5x5?带有值的字符。图像在下面

Matlab Result

我也尝试使用str2double,这是以前在网上使用的另一种方法,根本不起作用。

据我所知,这可能不是输入数据的最有效方法(我对Matlab来说相当新),但我发现这种方法是一种快速而简洁的方法。如果你知道一个更简单的方法,请指出我正确的方向

非常感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

您正在寻找split()功能:

answer = {'1 2 3' ; '4 5 6' ; '7 8 9' ; '10 11 12' ; '13 14 15'};
answer = str2double(split(answer))
  

回答=

 1     2     3
 4     5     6
 7     8     9
10    11    12

至于输入数据的简单方法,我喜欢直接从Excel复制并粘贴到工作区中的Variables面板。请记住,要从Excel粘贴到Matlab,您应该使用CTRL + SHIFT + V而不是标准CTRL + V.