#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) так же, как у меня было в начале, без скобок и всего остального.