Преобразование значений из одной ячейки в матрицу - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь создать небольшой скрипт, который дает пользователю возможность создавать новую матрицу (10x8) с нуля, которая впоследствии будет использоваться в билинейной интерполяции.

В настоящее время мой метод для этого состоит в использовании функции prompt с 10 строками во всплывающем блоке.Затем пользователь вводит 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?Char со значениями в. Изображение ниже

Matlab Result

Я также пытался использовать str2double, еще один метод, который ранее использовался в Интернете,это не сработало вообще.

Я понимаю, что это может быть не самый эффективный метод ввода данных (я довольно новичок в Matlab), но я обнаружил, что этот способ был быстрым и чистым методом.Если вы знаете более простой способ, пожалуйста, укажите мне правильное направление

Большое спасибо за любую помощь, которую вы можете оказать.

1 Ответ

0 голосов
/ 26 апреля 2018

Вы ищете функцию split():

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

answer =

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

Что касается более простого способа ввода данных, янравится копировать и вставлять непосредственно из Excel на панель переменных в рабочей области.Помните, что для вставки из Excel в Matlab вы должны использовать CTRL + SHIFT + V вместо стандартных CTRL + V.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...