Как использовать ответ (из окна командной строки) для кода

#matlab

#matlab

Вопрос:

У меня есть случайная матрица (A), и я нахожу результат, который я хотел бы использовать позже для своего кода

 A=randint(5,7,[1,9])
ans A =

     8     1     2     2     6     7     7
     9     3     9     4     1     7     1
     2     5     9     9     8     4     3
     9     9     5     8     9     6     1
     6     9     8     9     7     2     1
  

Как я могу теперь получить:

 A = [8,1,2,2,6,7,7;9,3,9...7,2,1];
  

без необходимости вводить его самостоятельно.

Ответ №1:

В MATLAB есть функция для этого: MAT2STR

 >> A = randi([1,9],[5,7]);
>> mat2str(A)
ans =
[5 5 7 5 3 2 5;5 6 5 3 8 4 1;9 8 8 1 7 9 6;1 5 5 1 8 6 3;3 4 5 8 9 9 5]
  

Это подходит для использования с EVAL

Ответ №2:

Просто подумал о другом способе. Ваша цель — иметь A в вашем скрипте — верно?

Вы можете просто вставить его следующим образом:

 A = [
     8     1     2     2     6     7     7
     9     3     9     4     1     7     1
     2     5     9     9     8     4     3
     9     9     5     8     9     6     1
     6     9     8     9     7     2     1 
 ]
  

(обратите внимание на квадратные скобки)

Он будет соответствовать вашей исходной матрице.

Ответ №3:

Создайте строку самостоятельно:

 Str = ['[' sprintf('%i',A(1)) sprintf(',%i',A(2:end)) ']']
  

Обратите внимание, что эта строка не содержит ни ; одного, как в вашем примере. поэтому, когда вы его оцениваете, вы получите вектор 1×35 (вместо исходной матрицы 5x7matrix)

Таким образом, самый простой способ исправить это — добавить после оценки строки.

 A = reshape(A,5,7)
  

Это будет выглядеть так

 B = [....
B = reshape(B,5,7)
  

Комментарии:

1. Я ввел то, что вы написали, и Matlab сообщает о неожиданном выражении Matlab

2. Ах, я понимаю. Забыл скобку. Вот что происходит, когда у вас дома нет matlab для ваших комментариев 🙂

3. не могли бы вы, пожалуйста, перепечатать его. Я не знаю, какую скобку вы имеете в виду. Спасибо

4. Теперь код в ответе должен работать. Второй sprintf открывает два (но закрывает только один.

5. хорошо, эта строка дает мне вектор так, как я просил, но эта функция изменения формы дает мне matrix(A) так же, как у меня было в начале, без скобок и всего остального.