#matlab #file #types #format
#matlab #файл #типы #формат
Вопрос:
Я сохранил матрицу в file.txt ; тип матрицы выглядит следующим образом:
file: 0.010993,0.21973,0.012142,0.49897,0.24634,0.01183
Когда я открываю матрицу с помощью
Matrix= dlmread( 'File.txt') ) ;
Matlab принимает только 4 числа после точки, где матрица:
Matrix: 0.0110 0.2197 0.0121 0.4990 0.2463 0.0118
Я не хочу менять числа после матрицы.
Ответ №1:
Проверка рабочей области:
Без каких-либо изменений и простой проверки переменной Matrix
в окне workspace показывает, что сохранены полные значения и что MATLAB просто выбирает отображение только определенного количества цифр:
Matrix = dlmread('File.txt')
Изменение формата отображения:
Если вы настроите формат отображения long
, вы увидите, что MATLAB извлекает все десятичные дроби из текстового файла и может отображать их в окне командной строки. Кроме того, открытие array Matrix
на панели workspace и щелчок по ячейкам также проверяет, учтены ли все десятичные числа. Для получения более подробной информации о параметрах отображения: Документация Matlab: Установите формат отображения вывода командного окна.
Примечание: «Числовые форматы влияют только на то, как числа отображаются в выводе окна командной строки, а не на то, как MATLAB® вычисляет или сохраняет их».
format long
Matrix = dlmread('File.txt')
Расширение: проверка суммы
format long
Matrix = dlmread( 'File.txt') ;
sum(Matrix)
sum([0.010993,0.21973,0.012142,0.49897,0.24634,0.01183])
Взятие суммы VPA:
format long
Matrix = dlmread('File.txt') ;
sum(vpa(Matrix))
sum(vpa([0.010993,0.21973,0.012142,0.49897,0.24634,0.01183]))
Сценарий игровой площадки:
Тестирование различных методов отображения и подходов к получению sum()
.
x = [0.010097,0.19957,0.011086,0.49413,0.27437,0.010745];
sum(vpa(x))
x = [0.010097000000000 0.199570000000000 0.011086000000000 0.494130000000000 0.274370000000000 0.010745000000000];
sum(vpa(x))
%%
format short
x = [0.010097,0.19957,0.011086,0.49413,0.27437,0.010745];
sum(x)
x = [0.010097000000000 0.199570000000000 0.011086000000000 0.494130000000000 0.274370000000000 0.010745000000000];
sum(x)
%%
format long
x = [0.010097,0.19957,0.011086,0.49413,0.27437,0.010745];
sum(x)
x = [0.010097000000000 0.199570000000000 0.011086000000000 0.494130000000000 0.274370000000000 0.010745000000000];
sum(x)
Запускался с использованием MATLAB R2019b
Комментарии:
1. Я знаю этот метод, но он не полезен для меня, я хочу, чтобы сумма строки == 1. где сумма [x=[0.010097,0.19957,0.011086,0.49413,0.27437,0.010745] равно 1, но сумма [0,010097000000000 0,199570000000000 0,011086000000000 0,494130000000000 0,274370000000000 0,010745000000000] равна 0,999998000000000
2. Я получаю
0.999998
для обоих массивов в вашем комментарии. Я в замешательстве? Если у вас установлен формат asshort
, то для обоих результатов будет отображаться 1. Если вы хотите проигнорировать форматvpa()
, в котором используются массивы / матрицы передsum()
, может быть вариант.3. Большое вам спасибо за вашу помощь. У меня большой код, я не могу изменить весь код, я должен прочитать хорошие значения из файла. сумма до и после format long отличается. vpa не является решением
4. Числа, считываемые из текстового файла, имеют одинаковые десятичные цифры, разница лишь в том, что есть дополнительные конечные нули.
5. Я хочу прочитать то же значение файла. вот и все. Я не буду менять формат чтения