我正在尝试创建一个小脚本,允许用户从头开始创建新矩阵(10x8),稍后将用于双线性插值。
目前,我执行此操作的方法是在弹出框中使用带有10行的prompt
函数。然后,用户将为他们想要的每一行输入8个值。
这将输出一个10x1单元格,其值在其中。然后这个10x1单元需要转换为10x8矩阵
以下是我当前代码的简化示例(5x3)矩阵构思。
用户输入;
输入数据后,我已尝试让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?带有值的字符。图像在下面
我也尝试使用str2double
,这是以前在网上使用的另一种方法,根本不起作用。
据我所知,这可能不是输入数据的最有效方法(我对Matlab来说相当新),但我发现这种方法是一种快速而简洁的方法。如果你知道一个更简单的方法,请指出我正确的方向
非常感谢您提供的任何帮助。
答案 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.