Вопросы с тегами [matlab]

1

голосов
1

ответ
3.5k

Просмотры

как запустить MatLab скрипт в макинтош терминала [закрыт]

Я ищу для этого и получил некоторый ответ с участием Sudo, я новичок в Linux, и интересно, как сделать это в терминале, скажем, мой файл в Desktop / Hw MATLAB установлен в приложении может дать мне подробные инструкции, команды? Спасибо
user3341953
0

голосов
0

ответ
3

Просмотры

Matlab / Simulink: Как ПРОГРАММНЫЙ редактировать Солнечный компонент Cell?

Я пытаюсь программно добавить компоненты в модели Simulink. Программная модель редактирования логика Matlab очень прямолинейно, но здесь я бегу в проблему. Я struggeling с термическим портом Солнечной компоненты клетки (Simscape / Физическая составляющая). Вручную, вы можете показать термический порт, щелкнув правой кнопку мыши на компоненте, навигацию к «Simscape»> «Блокировать выбор»> «Показать Тепловой Port». Но как это можно сделать программно? Компонент находится в «elec_lib / Источники / Solar Cell». Я понял, что параметр «ComponentPath» ссылка на тепловой порт Солнечного блока Cell. Если я вручную показать термический порт, изменения этого компонента «elec.sources.solar_cell_thermal». Но если я пытаюсь изменить один и тот же компонент, к этому значению программно, это не приводит на термическом порт, показывающий в панели Simulink. Был бы признателен за любую помощь или комментарий - я действительно зависит от него!
Philipp Wälchli
1

голосов
1

ответ
38

Просмотры

Как построить имена файлов в вложенном цикле

Я пытаюсь получить доступ к 4k изображений и подрезать некоторые ROI, на основе областей (4 ROI в моем случае) и хранить их в каком-нибудь каталоге. Пока все нормально работает, кроме петель обработки из файла. Ниже прилагается мой код. Я доступа N 4k изображения, обрезать и изменять их размер до нужного мне разрешения. В конце концов, когда я попытался сохранить данные изображения получили перезаписаны. N = 2; для IMG = 1: N х = gTruth.LabelData.crack {IMG, 1} для г = 1: 4 Ячейки = х (я, 1: 4) baseFileName = theFiles (IMG) .name; FullFileName = FullFile (MyFolder, baseFileName); fprintf (1, 'Теперь чтение% S \ N', FullFileName); imageArray = imread (FullFileName); Crop = imcrop (imageArray, клетка); imshow (растениеводство); В = imresize (растениеводство, [256 256]); imshow (В); imwrite (В, strcat ( 'C: \ Users \ USER \ Desktop \ Directory \ imagefile_00' , num2str (я), 'PNG')). конец конца моего вопроса заключается в том, что после цикла я работает, это экономит 4 изображения и IMG снова он сохраняет четыре значения. Теперь, когда код работает он сохраняет только последние 4 изображения и не 8. Я должен получить аи * N общего количество изображений, но я получаю только 4 и остальные будут перезаписаны. Как я могу адаптировать свою программу, чтобы сохранить все файлы?
Rakeh Sheikh
1

голосов
2

ответ
43

Просмотры

Общее количество страниц в PDF документе

MATLAB предоставляет функцию extractFileText, которая позволяет нам читать текст из PDF-файлов, среди других форматов файлов и сохранять извлеченный текст в виде строки. Мы можем передать дополнительный аргумент этой функции для извлечения текста из отдельных страниц документа. Например, чтобы извлечь текст из страниц 3, 5 и 7 из образца exampleSonnets.pdf файла: ул = extractFileText ( "exampleSonnets.pdf", 'Страницы', [3 5 7]); Эта функция, однако, не дает способ узнать общее количество страниц, что PDF документ содержит заранее. Так что если нам случится что-то вроде: ул = extractFileText ( "exampleSonnets.pdf", 'Страницы', [99 100]); Следующая ошибка возникает: Ошибка с помощью extractFileText (строка 95) Нет страница 100 в файле. Максимальное количество страниц: 47. Предупреждение о том, что мы просили номер страницы, которая превышает фактическое общее количество страниц в документе. Это отлично. Однако, как я могу узнать общее количество страниц в PDF-документе заранее, не вызвав ошибку, так что я могу безопасно сузить свои поиски до максимального количества страниц? Есть ли функция для этой цели?
codeaviator
1

голосов
1

ответ
50

Просмотры

Создание квартальной даты вектор для участка в Matlab

Как я могу преобразовать это (гораздо больше) вектор в квартальные значения как Q1-1991 и т.д., что сюжет хорошо на графике в Matlab? Я гугл / Matlab-помощь обыскала / ищется в этом форуме, и ничего не нашел. Сроки = [19961; 19962; 19963; 19964; 19971; 19972]
LenaH
1

голосов
3

ответ
42

Просмотры

Добавить номер для всех отрицательных значений в матрице 4D

У меня есть матрица DirModel размерности 2x2x29x1739. Я хочу, чтобы добавить 360 на все отрицательные значения в этой матрице, но код я использую не поспевает размеры этой матрицы, она делает его в массив: отр = DirModel
Jellyse
1

голосов
2

ответ
45

Просмотры

Скалярное-Vector умножение meshgrid (Matlab)

У меня есть выражение, такие как S = аи + ЬУ, где а и Ь скаляры и U и V 3-компонентные векторы. Выход с явно вектор а 3-компонента. Давайте предположим, что я хочу, чтобы построить первый компонент с узнать, как это меняется, когда я меняю и б. Для построения я должен использовать прибой, который принимает матрицы для переменных а б. Таким образом, я пытаюсь создать матрицы с meshgrid: A = 0: 10; В = 1: 10; [А, Ь] = meshgrid (А, В); U = [1,1,0]; V = [1,0,1]; S = а * U + B * V; Это явно не работает, потому что ни матричное произведение, ни поэлементно продукт хорошо определены в данном случае. Как на самом деле сделать матрицы, которые представляют собой сетку аб умножения элемента-на-элемент векторов U и V?
usumdelphini
1

голосов
0

ответ
46

Просмотры

Почему не MatLab печать миньоны с определенными формами?

Я недавно «модернизировал» от MATLAB R2011 до R2017b. Теперь, когда я пытаюсь напечатать EPS цифры с относительно сложными объектами заполнения, они растрирования. Эта цифра (и другие подобные ему) в порядке: Эта цифра (и другие подобные ему) получить растрирования (и больше, нежелательные поля): Разница (от других примеров), как представляется, сигмовидной объект в форме заполнения в нижней фигуры, по сравнению с верхней фигурой, которая имеет только с-образные объекты. Я знаю, что это может быть связано с хорошо известными проблемами вектор полиграфических в MATLAB, и я просмотрел в MATLAB справочные форумы для решения без успеха. Что меня удивляет здесь тонкое различие между фигурами, по-видимому, вызывающих проблемы. Вопросы: Любой известный обходные? Что вы думаете о моей теории о сложностях объектов заполнения?
Jesse Knight
1

голосов
1

ответ
58

Просмотры

Creating new rows in a matrix, where the elements of these rows have to be different from previous rows(same row cannot occur twice) Matlab

Я пытаюсь создать матрицу 3x2. Каждая строка генерируется с использованием randperm (3,2). Это означает, что каждая строка генерируется в виде вектора с 2 уникальных целых чисел со значениями между 1 и 3. Проблема заключается в том, что я хочу, чтобы каждый новый ряд, чтобы отличаться от всех предыдущих. Например, если одна строка [1 3], то никакая другая строка не может быть: [1 3], ни [3 1]. Я пытался проверить сумму и умноженное значение каждого вновь созданный ряд. (В нашем примере 1 +-= 4 и 1 * 3 = 3) Моя идея заключается в том, что умноженное значение и значение суммы каждого нового создаваемого ряда сравниваются с умноженным значением и значением суммы каждой второй строки, которая приходит перед ним. Если какая-либо из этих значений одинаково (что означает, что мы получим повторение), мы продолжаем не генерировать новую строку, используя randperm (3,2) до получения совершенно новая строка. Мой код проверяет каждый каждую строку перед одной за раз, и " Как я могу сделать это сравнение? родители = randperm (3,2); для I = 2: 3 родители = [родители; randperm (3,2)] для к = 1: 1-я в то время прод (родители (I,:)) == прод (родители (ик, :)) && сумма (родители (I,:)) == (сумма родители (ик, :)) родители (я,:) = randperm (3,2) конец конец I = I + 1; конец Как я могу сделать это сравнение? родители = randperm (3,2); для I = 2: 3 родители = [родители; randperm (3,2)] для к = 1: 1-я в то время прод (родители (I,:)) == прод (родители (ик, :)) && сумма (родители (I,:)) == (сумма родители (ик, :)) родители (я,:) = randperm (3,2) конец конец I = I + 1; конец
Arian
1

голосов
0

ответ
232

Просмотры

Random Points in an n-Dimensional Hypersphere

Этот код Matlab, создает набор случайных точек, определенные декартовыми координаты и равномерно распределенных по внутренней части п-мерной гиперсферы радиуса г с центром в начале координат. источник здесь. очистить все CLC м = 20000; п = 2; г = 2; % // порождает круг границы С = [3 4]; % // центр [х] т = LINSPACE (0, 2 * пи, 100); х = г * соз (т) + С (1); у = г * Sin (т) + С (2); C_rep = repmat (С, м, 1); Х = randn (т, п); с2 = сумма (Х ^ 2,2); Х = Х * repmat (г * (RAND (м, 1) ^ (1 / п)) ./ SQRT (с2), 1, п.) + C_rep; %% Участок фигуры (1), CLF участок (х, у, 'б') выполнены на участке (С (1), С (2), 'г.', 'MarkerSize', 50)% центральная точка удержания на участке (Х (:, 1), X (:, 2), 'г', 'markersize', 2); оси равны; трансфокация; увеличить на; drawnow; SHG; ах = ось; Это выход: который не то, что я хочу. Как сделать пункты распределены вокруг центральной точки С? При п = 2, 3, 4, K Размеры Что s2 означает?
Shdotcom
1

голосов
0

ответ
65

Просмотры

GARCH QML в MATLAB

Я хотел бы рассчитать параметры для GARCH с использованием QML. Мне было интересно, если ARIMA набор инструменты из Matlab дает нам ошибку QML? Привет
Nina
1

голосов
0

ответ
343

Просмотры

Используйте Cygwin как MEX компилятор в MATLAB

Я установил Cygwin как MEX компилятор для MATLAB 2016b, установив переменную окружения MW_MINGW64_LOC быть G: \ cygwin64. Затем я испытано несколько простых примеров. Г ++ в Cygwin прекрасно работает как компилятор. Однако, когда я называю скомпилированный mexw64 функцию, Matlab аварии и сообщение об ошибке выглядит следующим образом: MATLAB аварии файл: C: \ Users \ ук \ AppData \ Local \ Temp \ matlab_crash_dump.6792-1: ------- -------------------------------------------------- --------------- нарушение прав доступа обнаружены в Пнд янв 08 19:18:18 2018 ---------------------- -------------------------------------------------- Конфигурация: Краш Декодирование: Disabled - Нет песочницы или построить путь области Крушения режим: продолжать (по умолчанию) Current Graphics Driver: Неизвестный аппаратный кодировки по умолчанию: Windows-1252 развернутые: ложные видеокарты 1: Если MEX-файл не является официальной функцией MathWorks, пожалуйста, проверьте его исходный код на наличие ошибок. Пожалуйста, обратитесь к Руководству Внешних интерфейсов для получения информации о отладке MEX-файлах. Я также тестировал другие MatLab поддерживаемых компиляторов, например, МСВС 2017 года и MinGW64. Полученная MEX функция хорошо работает без закрытия MATLAB. Так как у меня есть некоторые другие коды, которые могут быть скомпилированы только с помощью Cygwin, а не МСВС, ни MinGW64, могу я знаю, как решить вышеуказанную проблему? Для этих кодов, я успешно использовал Cygwin, чтобы получить файл ехе и он работает должным образом. Заранее большое спасибо! Полученная MEX функция хорошо работает без закрытия MATLAB. Так как у меня есть некоторые другие коды, которые могут быть скомпилированы только с помощью Cygwin, а не МСВС, ни MinGW64, могу я знаю, как решить вышеуказанную проблему? Для этих кодов, я успешно использовал Cygwin, чтобы получить файл ехе и он работает должным образом. Заранее большое спасибо! Полученная MEX функция хорошо работает без закрытия MATLAB. Так как у меня есть некоторые другие коды, которые могут быть скомпилированы только с помощью Cygwin, а не МСВС, ни MinGW64, могу я знаю, как решить вышеуказанную проблему? Для этих кодов, я успешно использовал Cygwin, чтобы получить файл ехе и он работает должным образом. Заранее большое спасибо!
Hugo
1

голосов
0

ответ
325

Просмотры

Matlab предупреждение об ошибке соединения

Каждый раз, когда я начинаю Matlab я показано сообщение модального предупреждения, чтобы предупредить меня о том, что Matlab не может подключиться к MathWorks. Я ищу способ остановить Matlab от попыток этого соединения, или по крайней мере отключить сообщение. Я работаю на автономной системе, которая не имеет доступа в Интернет. Я мог бы найти два места в пределах предпочтений, которые относятся к подключению к Интернету, и отключить их оба. Но проблема остается. Я не могу найти ответ на страницах поддержки MathWorks. Кто-нибудь знает, как это отключить?
Blair Fonville
1

голосов
0

ответ
93

Просмотры

Заказанный Isoline Расчет с 3D Треугольных поверхностей в MATLAB

Мне нужно, чтобы извлечь изолинии координаты 4D переменного от 3D поверхности, определяемой с помощью триангулированных сеток в среде MATLAB. Мне нужно изолиния координаты быть упорядочены таким образом, что если бы они следовали в порядке, они бы проследить путь т.е. порядка точек 3D-принтер будет следовать. Я нашел функцию, которая может вычислить координаты этих изолиний (см функцию Isoline здесь), но проблема эта функция не учитывает изолинии должны быть соединены в правильном порядке, и вместо того, чтобы серия из 2-х точек, разделенных значением Nan , Это делает эту функцию подходит только для визуализации, а не путь, чтобы следовать. Вот MWE проблемы упрощенной задачи, поверхность я применяю это тоже является гораздо более сложным, и я не могу поделиться. Где х, у и г являются узлами, с TRI предоставления списка связности элементов и v является переменным, которую я хочу изолинию, извлеченную из и не равен г. Если у кого есть какие-либо идеи на любом ..... Функция для извлечения изолиний значений в правильном порядке для 3D три- сетки. Как сортировать данные, данные функции Isoline так, что они находятся в правильном порядке. .... было бы очень признателен. Вот это ММВЙ,% Создать координаты [х] = meshgrid (-10: 0,5: 10, -10: 0,5: 10); г = (х ^ 2 + у ^ 2..) / 20; % Высота Z V = х + у; % 4-е значение размера% Reshape координат в списке должны быть преобразованы в третье состояние сетки х = Reshape (х, [], 1); у = Reshape (у, [], 1); г = Reshape (г, [], 1); v = Reshape (V, [], 1); TRI = Делон (х, у); % Convertion к три- меш% Эта функция вычисляет изолинии координаты [xTows, yTows, zTows] = изолинии ({КТВ, [х, у, г]}, V, -18: 2: 18); % Plotting цифра (1); CLF (1) подзаговор (1,2,1) trisurf (КТВ, х, у, г, v) зацепиться за I = 1: размер (xTows, 1) plot3 (xTows {Я, 1}, {yTows я, 1}, {zTows я, 1}, '-k') конца удержать затенения Interp xlabel ( 'х'); ylabel ( 'у'); zlabel ( 'г'); название ( «Изолинии»), ось равна %% Этот раздел только, чтобы показать, что изолинии не для того, чтобы я = 1: размер (xTows, 1)% Организация данных в colums и избавлении от Nans, которые появляются XB = xTows {я, 1}; Yb = yTows {г, 1}; ZB = zTows {Я, 1}; XB = Reshape (XB, 3, []) '; XB (:, 3) = []; Yb = Reshape (Yb, 3, []) '; Yb (:, 3) = []; ZB = переформовать (ZB, 3, []) '; ZB (:, 3) = []; подзаговор (1,2,2) trisurf (КТВА, х, у, г, v) вид затенения интерполяции (2) xlabel ( 'х'); ylabel ( 'у'); zlabel ( 'г'); название ( «Черчение изолинии в Приказе») оси равны; Ось плотно; зацепиться за I = 1: размер (XB, 1) plot3 ([ХВ (I, 1) XB (I, 2)], [Yb (я, 1) Yb (I, 2)], [ZB (я, 1) ZB (я, 2)], '-k') drawnow конец конца и здесь функция Isoline, что я чуть-чуть adpated. Функция [xTows, yTows, zTows] = изолинии (Surf, F, V, Col), если длина (Surf) == 3% конвертировать сетки для триангуляции P = [Surf {1} (:) Surf {2} (:) Surf {3} (:)]; Surf {1} (конец, :) = 1i; Surf {1} (:, окончание) = 1i; я = найти (~ емк (Surf {1} (:))); п = размер (Surf {1}, 1); Т = [я + 1 я + N; + 1 я + п + 1 я + п]; остальной Т = Surf {1}; P = Surf {2}; Конец F = F (T (:)); если Наргин == 2 V = LINSPACE (мин (е), макс (е), 22); V = (2: конец-1); ElseIf numel (V) == 1 В = LINSPACE (мин (е), макс (е), V + 2); V = (2: конец-1); конец, если Наргин = 0,2) и С (:, я) «-K») drawnow конец конца, и здесь есть функция Isoline, что я чуть-чуть adpated. Функция [xTows, yTows, zTows] = изолинии (Surf, F, V, Col), если длина (Surf) == 3% конвертировать сетки для триангуляции P = [Surf {1} (:) Surf {2} (:) Surf {3} (:)]; Surf {1} (конец, :) = 1i; Surf {1} (:, окончание) = 1i; я = найти (~ емк (Surf {1} (:))); п = размер (Surf {1}, 1); Т = [я + 1 я + N; + 1 я + п + 1 я + п]; остальной Т = Surf {1}; P = Surf {2}; Конец F = F (T (:)); если Наргин == 2 V = LINSPACE (мин (е), макс (е), 22); V = (2: конец-1); ElseIf numel (V) == 1 В = LINSPACE (мин (е), макс (е), V + 2); V = (2: конец-1); конец, если Наргин = 0,2) и С (:, я) «-K») drawnow конец конца, и здесь есть функция Isoline, что я чуть-чуть adpated. Функция [xTows, yTows, zTows] = изолинии (Surf, F, V, Col), если длина (Surf) == 3% конвертировать сетки для триангуляции P = [Surf {1} (:) Surf {2} (:) Surf {3} (:)]; Surf {1} (конец, :) = 1i; Surf {1} (:, окончание) = 1i; я = найти (~ емк (Surf {1} (:))); п = размер (Surf {1}, 1); Т = [я + 1 я + N; + 1 я + п + 1 я + п]; остальной Т = Surf {1}; P = Surf {2}; Конец F = F (T (:)); если Наргин == 2 V = LINSPACE (мин (е), макс (е), 22); V = (2: конец-1); ElseIf numel (V) == 1 В = LINSPACE (мин (е), макс (е), V + 2); V = (2: конец-1); конец, если Наргин = 0,2) и С (:, я) Col), если длина (Surf) == 3% конвертировать сетки для триангуляции P = [Surf {1} (:) Surf {2} (:) Surf {3} (:)]; Surf {1} (конец, :) = 1i; Surf {1} (:, окончание) = 1i; я = найти (~ емк (Surf {1} (:))); п = размер (Surf {1}, 1); Т = [я + 1 я + N; + 1 я + п + 1 я + п]; остальной Т = Surf {1}; P = Surf {2}; Конец F = F (T (:)); если Наргин == 2 V = LINSPACE (мин (е), макс (е), 22); V = (2: конец-1); ElseIf numel (V) == 1 В = LINSPACE (мин (е), макс (е), V + 2); V = (2: конец-1); конец, если Наргин = 0,2) и С (:, я) Col), если длина (Surf) == 3% конвертировать сетки для триангуляции P = [Surf {1} (:) Surf {2} (:) Surf {3} (:)]; Surf {1} (конец, :) = 1i; Surf {1} (:, окончание) = 1i; я = найти (~ емк (Surf {1} (:))); п = размер (Surf {1}, 1); Т = [я + 1 я + N; + 1 я + п + 1 я + п]; остальной Т = Surf {1}; P = Surf {2}; Конец F = F (T (:)); если Наргин == 2 V = LINSPACE (мин (е), макс (е), 22); V = (2: конец-1); ElseIf numel (V) == 1 В = LINSPACE (мин (е), макс (е), V + 2); V = (2: конец-1); конец, если Наргин = 0,2) и С (:, я)
M.Thomas
1

голосов
1

ответ
474

Просмотры

write a compound array to h5 in Matlab?

I need to write a struct array like following to h5? How to do this? Thanks a lot! wdata.serial_no = int32(5); wdata.temperature = 6.0; wdata.pressure = 7.0; wdata_array{1} = wdata; wdata_array{2} = wdata; My trial: % construct the struct array wdata.serial_no = int32(5); wdata.temperature = 6.0; wdata.pressure = 7.0; wdata_array{1} = wdata; wdata_array{2} = wdata; % open the file file = H5F.create ('test.h5', 'H5F_ACC_TRUNC',... 'H5P_DEFAULT', 'H5P_DEFAULT'); % build the compound memtype intType =H5T.copy('H5T_NATIVE_INT'); sz(1) =H5T.get_size(intType); doubleType=H5T.copy('H5T_NATIVE_DOUBLE'); sz(2) =H5T.get_size(doubleType); sz(3) =H5T.get_size(doubleType); offset(1)=0; offset(2:3)=cumsum(sz(1:2)); memtype = H5T.create ('H5T_COMPOUND', sum(sz)); H5T.insert (memtype,... 'serial_no', offset(1), intType); H5T.insert (memtype,... 'temperature', offset(2), doubleType); H5T.insert (memtype,... 'pressure', offset(3), doubleType); ts_memtype = H5T.array_create(memtype, 2); space = H5S.create_simple (1, 1, []); dset = H5D.create (file, 'DS1', ts_memtype, space, 'H5P_DEFAULT'); H5D.write (dset, ts_memtype, 'H5S_ALL', 'H5S_ALL', 'H5P_DEFAULT', wdata_array); H5D.close (dset); H5S.close (space); H5F.close (file); Error: The number of input structure fields (0) does not match the number of H5T_COMPOUND members defined in the file (3).
Li Bowen
1

голосов
0

ответ
61

Просмотры

Performance of using a matrix as vector index

В моем коде у меня есть медленная часть которого идея можно резюмировать в следующем коротком примере: A = (10,5 Рэнди); % Случайная 5 × 5 матрица, содержащая целые числа в диапазоне от 0 до 10 В = RAND (10,1); % Случайные 10 × 1 вектор, содержащий значения в диапазоне от 0 до 1 C = B (A); % Новый 5 × 5 матрица, состоящая из элементов из B, индексированные с помощью В моем случае, матрица А размером 1000 × 1000, В представляет собой 500 × 1 вектор и С также 1000 × 1000. Учитывая, что это третья строка в цикле, где А является постоянным и B обновляется каждую итерацию, как я могу дополнительно улучшить производительность скорости? Согласно просмотра профиля 75% выполнения кода на этом одной строке. Как и следовало ожидать, используя для цикла для этой операции происходит гораздо медленнее (10x для 1000 × 1000 матрицы): АА = A (:); % Преобразование матрицы в вектор для к = 1: Длина (АА)% Цикл через этот вектор и использовать его в качестве индекса D (K) = B (АА (к)); Конец Е = Reshape (D, 5,5); % Переформуйте вектора матрицы 5x5 Любые идеи, чтобы оптимизировать это? Edit: Сценарий, используемый для измерения производительности: N = 1500; А = Randi (500, Н); АА = А (:); D = нули (N, N); В = Rand (500,1); f1 = @ () VectorIndex (А, В); timeit (f1,1) 2 = @ () LoopIndex (АА, B, N); timeit (f2,1) функция С = VectorIndex (А, В) С = В (А); Конец функции D = LoopIndex (АА, B, N) D = нули (N, N); к = 1: длина (АА) Д (к) = В (АА (к)); Конец D = Reshape (D, N, N); конец 1) функция С = VectorIndex (А, В) С = В (А); Конец функции D = LoopIndex (АА, B, N) D = нули (N, N); к = 1: длина (АА) Д (к) = В (АА (к)); Конец D = Reshape (D, N, N); конец 1) функция С = VectorIndex (А, В) С = В (А); Конец функции D = LoopIndex (АА, B, N) D = нули (N, N); к = 1: длина (АА) Д (к) = В (АА (к)); Конец D = Reshape (D, N, N); конец
Knippie
1

голосов
0

ответ
32

Просмотры

Может ли вход функции blockproc в MATLAB быть переменным на основе оцениваемого блока?

Я просто хочу знать, если это возможно передать переменный вход в blockproc Funtion. Например: весело = @ (block_struct) my_fun (block_struct.data, х); из = blockproc (им, [NN], удовольствие); Я хотел бы, что вход х изменений для каждого блока. В частности, х должно быть равно числу блока, например, х = 1 для первого блока, х = 2 для второго блока и т.д. Возможно ли это?
Alessandro
1

голосов
1

ответ
39

Просмотры

Как иметь два вложенных Parfors итерация двух огромных массивов в Matlab?

Учитывая два массива A = Huge_Arrau_one и B = Huge_array_two, как я могу изменить следующий код для работы в Matlab (как Matlab не принимает вложенные циклы). parfor (I, J) в all_combinations_of_A_and_B_indices A_in_this_worker = А (I); B_in_this_worker = В (к); .... конец Пожалуйста, обратите внимание, что я не хочу, чтобы все массива A и B в памяти для каждого работника, поскольку каждый работник нуждается только небольшую часть этого. Эта проблема обсуждалась ранее для индексации два измерения в 2d массив (используя sub2ind и ind2sub функции), но как ни странно, я никогда не видел эту версию проблемы я в настоящее время борется с. На самом деле, я хочу иметь отдельный работник для каждой комбинации, и мне нужно, чтобы получить доступ к части А и В в каждом работнике.
CoderInNetwork
1

голосов
0

ответ
72

Просмотры

Вычислить дисперсию Эллипс - Matlab

Я приспособил эллипс на объект, и я хочу, чтобы выполнить Ellipse вариантности (https://www.math.uci.edu/icamp/summer/research_11/park/shape_descriptors_survey.pdf, слайд 19). Поэтому, может кто-то пожалуйста, объясните мне, как это сделать. Спасибо Код: прозрачный; CLC; RGB = imread ( 'pillsetc.png'); I = rgb2gray (RGB); м.т. = imbinarize (I); imshow (м.т.)% удалить весь объект, содержащий менее 30 пикселей м.т. = bwareaopen (BW, 30); % Заполнить любые отверстия, так что regionprops может быть использован для оценки% площади, заключенной каждыми из границ м.т. = imfill (BW, «дырки»); imshow (м.т.) [B, L] = bwboundaries (BW, 'noholes'); % Отображение матрицы меток и рисовать каждую граничную imshow (label2rgb (L, @jet, [0,5 0,5 0,5])) удерживать при к = 1: длина (В) граница = В {K}; участок (граница (:, 2), граница (:, 1), 'W', 'LineWidth', 2) конец S = regionprops (L, 'MajorAxisLength', 'MinorAxisLength', 'Centroid', 'Ориентация'); держись% Отображение матрицы меток и извлечение границ Фи = LINSPACE (0,2 * пи, 50); cosphi = сов (фи); sinphi = Sin (фи); к = 1: длина (ы) XBAR = S (K) .Centroid (1); ybar = S (K) .Centroid (2); а = с (к) .MajorAxisLength / 2; B = S (K) .MinorAxisLength / 2; тета = пи * S (K) .Orientation / 180; R = [соз (тета) Sin (тета) -sin (тета) соз (тета)]; х = [а * cosphi; б * sinphi]; х = R * х; х = х (1, :) + XBAR; у = х (2, :) + ybar; участок (х, у, 'г', 'LineWidth', 2); конец повременить к = 1: длина (ы) XBAR = S (K) .Centroid (1); ybar = S (K) .Centroid (2); а = с (к) .MajorAxisLength / 2; B = S (K) .MinorAxisLength / 2; тета = пи * S (K) .Orientation / 180; R = [соз (тета) Sin (тета) -sin (тета) соз (тета)]; х = [а * cosphi; б * sinphi]; х = R * х; х = х (1, :) + XBAR; у = х (2, :) + ybar; участок (х, у, 'г', 'LineWidth', 2); конец повременить к = 1: длина (ы) XBAR = S (K) .Centroid (1); ybar = S (K) .Centroid (2); а = с (к) .MajorAxisLength / 2; B = S (K) .MinorAxisLength / 2; тета = пи * S (K) .Orientation / 180; R = [соз (тета) Sin (тета) -sin (тета) соз (тета)]; х = [а * cosphi; б * sinphi]; х = R * х; х = х (1, :) + XBAR; у = х (2, :) + ybar; участок (х, у, 'г', 'LineWidth', 2); конец повременить
lroca
1

голосов
0

ответ
66

Просмотры

mex -I flag not finding include files in a separate directory

Запуск в другой MATLAB MEX файл связанный с этим вопрос. В настоящее время пытается автоматически генерировать MEX файлы из .cpp файлов в заданной директории, данные пути к указанной директории. В настоящее время моя команда выглядит софт, как это ...% Они становятся прошли, но я проверил содержимое% ввода = «C: \ Users \ Иэн \ libXYZ \ Src \ то \ UTIL \ последовательность \ sequence.cpp» mexDir = 'C: \ Users \ Иэн \ libXYZ \ MEX' includeDir = 'C: \ Users \ Иэн \ libXYZ \ Include \ что-то \ Util \ последовательность \' Eval ([вход 'MEX' '-outdir' mexDir '-I' includeDir ]), который выглядит как ... «MEX C: /Users/ian/libXYZ/src/something/util/sequence/Sequence.cpp -outdir C: / Users / Ian / libXYZ / MEX -IC: / Users / Ian / libXYZ / включить / что-то / UTIL / последовательность /»по какой-то странной причине, я получаю сообщение об ошибке с включает в первом файле мы попали. Здание с ' Microsoft Visual C ++ 2015 Professional. Ошибка с помощью Mex Sequence.cpp C: \ Users \ Иэн \ libXYZ \ SRC \ то \ Util \ последовательность \ Sequence.cpp (4): фатальной C1083 ошибка: не удается открыть файл включать: 'что-то / Util / последовательность / Sequence.hpp' : Нет такого файла или каталога, то оно ошибки вне, когда он смотрит на инклюднике. Я проверил, что «/» против «\» не делает это (я использовал strrep (х, «\», «/») на пути и попытался еще раз, чтобы проверить) и убедились, что файлы были там , пути были правильными, и что файл .cpp был правильным включает. Все это не проблема после некоторого обширного тестирования и играть с ним. Вопрос будет, почему -Ipathname флаг в Eval (MEX) вызова не позволяет компилятору, чтобы захватить правильный включать каталог? Если у кого есть какие-либо идеи относительно того, почему это может происходить, я ценю это. EDIT: Это линия, которая включает в себя Sequence.hpp в Sequence.cpp // Включить заголовки проекта #include «что-то / Util / последовательность / Sequence.hpp» Там может быть странность здесь, но я не знаю, как проверить, или как чтобы решить (абсолютный против относительных путей?).
Ian
1

голосов
1

ответ
142

Просмотры

MATLAB: Как использовать imnoise (I, '', localvar image_intensity, VaR)?

Я пытаюсь добавить шум к изображению, которое изменяется в зависимости от интенсивности изображения. I = imread (имя файла); фигура, imshow (I); V = I (:); J = imnoise (I, 'localvar', V, 0.04 * v); фигура, imshow (J); Но когда я запускаю алгоритм, я получаю следующее исключение: ошибка при использовании макс: Целые можно комбинировать только с целыми числами одного и того же класса или скалярных двойников я не уверен, что моя проблема тоже. Спасибо вам большое!
sk117
1

голосов
0

ответ
83

Просмотры

MATLAB и ImageJ: без потерь работы на двойных изображений (imadjust, strechlim, imwrite)

Я работаю на стопке «двойных» изображений. Я пытаюсь сделать некоторый контраст растяжку и сохранять изображения в без потерь способом, который я могу открыть позже в ImageJ для анализа. Я пытаюсь сохранить детализацию изображения, поэтому я обеспокоен потерей данных, если преобразовать в Uint8 и т.д. Я бы в противном случае делать: при г = 1: NUM_IMAGES изображения = uint8 (ImageSet (:,:, я)); imadjust (изображение, stretchlim (изображение), []); saveloc = [SomeFolder, num2str (я), 'TIF.']; imwrite (изображение, saveloc); конец I wan't сделать эквивалент этого и создать папку контрастных изображений (регулируются им угадывание 32 битной размолвка?), которые я могу затем загрузить в ImageJ в показах состояния способа.
user3470496
1

голосов
1

ответ
70

Просмотры

How can i check how the predict function in MATLAB is working?

У меня есть очень простая программа MATLAB для обучения и тестирование регрессионного дерева, я использую те же carsmall данных, которые в примерах учебника: очистить все CLC закрыть все нагрузки carsmall X = [Цилиндры, вес, мощность двигатель смещение]; Y = MPG; дерево = fitrtree (X, Y 'PredictorNames', { 'Цилиндры', 'Вес', 'Horsepower', '' Displacement}, 'ResponseName', 'миль на галлон', 'MinLeaf', 10); XTEST = [6,4100,150,130]; MPGest = предсказать (дерево, XTEST); Это дает в результате MPGest = 14,9167 Я хочу знать, как функция предсказать прибывает на это значение, как правило, чтобы понять, я хожу построчно внутри функции. Это один из очень сложно, потому что использует классы таким образом я прийти к этой линии узла = findNode (this.Impl, X, this.DataSummary.CategoricalPredictors, поддерева); и внутри этой функции я приезжаю к п = classreg.learning.treeutils.findNode (X, ... поддеревья, this.PruneList, ... this.Children», Iscat, ... this.CutVar, this.CutPoint, это .CutCategories, ... this.SurrCutFlip, this.SurrCutVar, ... this.SurrCutPoint, this.SurrCutCategories, ... многословный); когда я пытаюсь вмешаться на данном этапе это просто дать мне п = 10, как MATLAB, прибывающие в этом номере? Например, если я хотел сделать свою собственную программу, чтобы вычислить это число с помощью объекта дерева в качестве входных данных без использования прогнозирует? this.SurrCutCategories, ... многословный); когда я пытаюсь вмешаться на данном этапе это просто дать мне п = 10, как MATLAB, прибывающие в этом номере? Например, если я хотел сделать свою собственную программу, чтобы вычислить это число с помощью объекта дерева в качестве входных данных без использования прогнозирует? this.SurrCutCategories, ... многословный); когда я пытаюсь вмешаться на данном этапе это просто дать мне п = 10, как MATLAB, прибывающие в этом номере? Например, если я хотел сделать свою собственную программу, чтобы вычислить это число с помощью объекта дерева в качестве входных данных без использования прогнозирует?
Diego Fernando Pava
1

голосов
0

ответ
61

Просмотры

Эргодическая Емкость Channal в MIMO-системах

Я пытаюсь проверить предположение, что эргодическая пропускная способность канала суммы в беспроводной MIMO возрастает линейно с числом пользователей K в приемнике (то есть приемная антенна), как указано здесь, на основе уравнения C = E [log2 (Det (i_m + ROH * H'DH))], где D = (1 / K) i_k (i_k является единичной матрицей размерности KxK) ROH = 10дБ i_m является единичной матрицей Это мой MATLAB код, но не получал необходимый участок , Чисто; закрыть все; CLC; n_iter = 1000; %% число итераций ROH = 10 ^ (10/10); %% TRANSMITER СИЛЫ К = 1:20; % Количество пользователей М = 20; % КОЛИЧЕСТВО ANTENNNA для II = 1: n_iter для кк = 2: длина (К) = i_m глаз (мин (кк, М)); Н = 1 / SQRT (2) * (randn (кк, М) + 1i * randn (кк, М)); %% СЛУЧАЙНЫХ КАНАЛА, если кк> = М НН = H»* H; еще HH = H * H '; конец конец С (:, кк) = нули (1, кк); для JJ = 2: длина (К) С (:, JJ) = С (:, JJ) + log2 (реальный (Det ((i_m + ROH * HH / JJ)))); %% КАНАЛ конец ЕМКОСТЬ конец C_avr = сумма (С, 1) / n_iter; участок (1: длина (К), C_avr)
Abdullahi Mohammad
1

голосов
0

ответ
28

Просмотры

Serial Communication with Arduino and MATLAB - debugging issue

Я написал следующий код MATLAB, который принимает каждый элемент массива «SendData» и посылает его к Arduino Uno. Ардуин затем использует эти данные, чтобы определить, какую конфигурацию двигатели должны работать в используя, если / IfElse цикла. Когда я шаг в линии контура в то время как по линии двигателей иногда будет поворачиваться. Когда они не я пытаюсь выполнить оператор fprintf в окне командной строки и имеет тенденцию работать. Если у кого есть какие-либо понять, почему этот код не выполняется должным образом, когда я бегу и / или шаг в него, но он будет работать хорошо, когда я выполнить оператор fprintf в окне командной строки, я бы очень признателен за любую помощь. удалить (instrfindall); очистить все; CLC% правопреемником оборудование к переменной а а = последовательный ( «com3»); % Incriment создать переменный инкр = 1; % Создать SendData массив строк sentData = [ '1', '2', '3',» 4' , '0']; % Цикл через 4 возможных заданные двигатель окон во время инкра
Alan McKenna
1

голосов
1

ответ
78

Просмотры

Преобразование вектора в матрице: новая строка, когда значение> X

У меня есть вопрос, и я не могу найти какое-либо решение, Моя проблема в том, что у меня есть вектор V (м х 1). В импортируются данные из Excel и может отличаться в leangth. Она содержит последовательности чисел> 7000 и последовательностей чисел <7000. Последовательности могут также отличаться по leangth. Теперь я хочу, чтобы скопировать все значения> 7000 в матрицу. Каждый раз, когда значение V получает> 7000 матрица должна начать новую строку. Так что новые строки матрицы не будут отличаться в leangth, короткие строки должны быть «заполнены» с 0 до leangth самой длинной строки не будет достигнут. Это пример того, как он должен работать. `V [18x1]: [6000, 6500, 5000, 8000, 15000, 15500, 16000, 6000, 4000, 16500, 14000, 400, 5000, 6000, 9000, 12000, 13000, 5000]` `Матрица [3x4]: 1.row [8000 15000 15500 16000] 2.row [16500 14000 0 0] 3.
Chris
1

голосов
0

ответ
44

Просмотры

oscillating genetic algorithm

Я пытаюсь реализовать генетический алгоритм на моем собственном, который оптимизирует два вектора. Существует граничное условие, где должно быть всегда больше, чем Ь. Записи векторов находятся в диапазоне от 1 до 15. Моей реализации работала на 1 вектор, но генетический алгоритм не сходится 2 векторов. Векторы испытываются в физической модели, которые выдают стандартное отклонение, которое должно быть минимальным в 0. Можно достичь этого значения, и им пытаются найти его с помощью генетического алгоритма я написал. Я мог бы сломать эту проблему рекомбинации и мутации: Когда recombinating или мутирует б имеет возможность получить больше, чем. Физическая модель, которая проверяет векторы не имеет смысла больше в этот момент так мойки стоимости фитнеса, хотя это было хорошо раньше. Для мутации я мог бы решить проблему с плохим стилем, чтобы только значения, которые держат б меньше, чем. Для рекомбинации, хотя я не понимаю, как решить эту проблему withouth ломая идею генетического алгоритма. например, родители: a1 = 1,1,9,9- и а2 = 9,9,1,1. b1 = 1,3,1,3 и b2 = 3,1,3,1 a1' = 1,1,1,1 и а2' = 9,9,9,9 b1' = 1,3,3,1 и b2 = 3,1,1,3 Тогда b1' больше, чем a1' . Алгоритм сходится к точке, где он прыгает обратно до низких уровней пригодности в качестве решения а и б, кажется, очень похожи друг на друга, поэтому алгоритм не сходится до определенного момента, терпит неудачу, и затем начинается снова. Я думаю, что я пропускаю точку где-то, но не могу найти его. т получить, как решить эту проблему withouth ломая идею генетического алгоритма. например, родители: a1 = 1,1,9,9- и а2 = 9,9,1,1. b1 = 1,3,1,3 и b2 = 3,1,3,1 a1' = 1,1,1,1 и а2' = 9,9,9,9 b1' = 1,3,3,1 и b2 = 3,1,1,3 Тогда b1' больше, чем a1' . Алгоритм сходится к точке, где он прыгает обратно до низких уровней пригодности в качестве решения а и б, кажется, очень похожи друг на друга, поэтому алгоритм не сходится до определенного момента, терпит неудачу, и затем начинается снова. Я думаю, что я пропускаю точку где-то, но не могу найти его. т получить, как решить эту проблему withouth ломая идею генетического алгоритма. например, родители: a1 = 1,1,9,9- и а2 = 9,9,1,1. b1 = 1,3,1,3 и b2 = 3,1,3,1 a1' = 1,1,1,1 и а2' = 9,9,9,9 b1' = 1,3,3,1 и b2 = 3,1,1,3 Тогда b1' больше, чем a1' . Алгоритм сходится к точке, где он прыгает обратно до низких уровней пригодности в качестве решения а и б, кажется, очень похожи друг на друга, поэтому алгоритм не сходится до определенного момента, терпит неудачу, и затем начинается снова. Я думаю, что я пропускаю точку где-то, но не могу найти его. Алгоритм сходится к точке, где он прыгает обратно до низких уровней пригодности в качестве решения а и б, кажется, очень похожи друг на друга, поэтому алгоритм не сходится до определенного момента, терпит неудачу, и затем начинается снова. Я думаю, что я пропускаю точку где-то, но не могу найти его. Алгоритм сходится к точке, где он прыгает обратно до низких уровней пригодности в качестве решения а и б, кажется, очень похожи друг на друга, поэтому алгоритм не сходится до определенного момента, терпит неудачу, и затем начинается снова. Я думаю, что я пропускаю точку где-то, но не могу найти его.
Andy
1

голосов
0

ответ
128

Просмотры

Преобразование файла MatLab.mat в текстовый файл для подготовки данных CNN.

Я ищу использовать Поза данные из этих сайтов: https://bensapp.github.io/flic-dataset.html http://human-pose.mpi-inf.mpg.de/#overview Но земля данные истина заключается в MatLab форма, я пытаюсь использовать сеть YOLO, чтобы попытаться классифицировать эти изображения, однако, YOLO требует этикеток подспутниковых быть форматом текстового файла. есть идеи как это сделать? В основном моя цель состоит в том, чтобы попытаться обучить сеть YOLO с этими образами путем преобразования их наземной истины в нужном формат и найти конечности и суставы в этих изображениях.
Richard Price-Jones
1

голосов
0

ответ
147

Просмотры

How do I mathematically represent affine transform of an image?

У меня 2 изображения в оттенках серого А и В. Я выполнения аффинное преобразование (вращение и перевод) на B. Я затем вычисления стандартного отклонения (AB *), где В *: В * = affine_transform (Б) Я хочу для запуска градиентного спуска, чтобы найти оптимальные значения & thetas, ТХ и ти таким образом, что моя функция F (θ, Тх, Ту) сведена к минимуму. е (θ, Тх, Ту) = σ (AB *) Однако у меня возникают проблемы на самом деле выписывая аффинное преобразование математически. Мне нужно сделать это прежде, чем я могу вычислить градиент для оптимизации процесса. Я знаю, что преобразованные точки будут рассчитываться по: [UV 1] = [XY-1] * [совы (θ) -sin (θ) 0; Sin (θ) COS (θ) 0; ТХ ти 1], где Х = [x1, x2 ..... хп] 'и Y = [y1, y2 ..... ут]' были бы векторы-столбцы, представляющие пиксельные индексы B. После этого я хотел бы использовать какой-либо метод интерполяции переназначить значение пикселей на их вновь расчетных показателях. Однако вышеуказанный шаг преобразования индекса представляет собой только часть расчета, что на самом деле использует & thetas, TX или ти. Первоначально я предположил, что я должен был бы частично дифференцировать матрицу преобразования от & thetas, ТХ и ти, но это дает, казалось бы, неверный результат: Дифференцирование WRT & thetas: [sin (θ) -cos (θ) 0; сов (θ) -sin (θ) 0; 0 0 0] WRT ТХ: [0 0 0; 0 0 0; 1 0 1] WRT ти: [0 0 0; 0 0 0; 0 1 1] Парциальные дифференциалы WRT Те и Ty отобразить все пиксели в изображении с теми же индексами 2 [1,0] и [0,1], который не может быть правильным. Любая помощь в выяснении, как кадр функции затрат здесь будет высоко оценен. ТХ или ти. Первоначально я предположил, что я должен был бы частично дифференцировать матрицу преобразования от & thetas, ТХ и ти, но это дает, казалось бы, неверный результат: Дифференцирование WRT & thetas: [sin (θ) -cos (θ) 0; сов (θ) -sin (θ) 0; 0 0 0] WRT ТХ: [0 0 0; 0 0 0; 1 0 1] WRT ти: [0 0 0; 0 0 0; 0 1 1] Парциальные дифференциалы WRT Те и Ty отобразить все пиксели в изображении с теми же индексами 2 [1,0] и [0,1], который не может быть правильным. Любая помощь в выяснении, как кадр функции затрат здесь будет высоко оценен. ТХ или ти. Первоначально я предположил, что я должен был бы частично дифференцировать матрицу преобразования от & thetas, ТХ и ти, но это дает, казалось бы, неверный результат: Дифференцирование WRT & thetas: [sin (θ) -cos (θ) 0; сов (θ) -sin (θ) 0; 0 0 0] WRT ТХ: [0 0 0; 0 0 0; 1 0 1] WRT ти: [0 0 0; 0 0 0; 0 1 1] Парциальные дифференциалы WRT Те и Ty отобразить все пиксели в изображении с теми же индексами 2 [1,0] и [0,1], который не может быть правильным. Любая помощь в выяснении, как кадр функции затрат здесь будет высоко оценен. 0 1 1] Парциальные дифференциалы WRT Те и Ty отобразить все пиксели в изображении с теми же индексами 2 [1,0] и [0,1], который не может быть правильным. Любая помощь в выяснении, как кадр функции затрат здесь будет высоко оценен. 0 1 1] Парциальные дифференциалы WRT Те и Ty отобразить все пиксели в изображении с теми же индексами 2 [1,0] и [0,1], который не может быть правильным. Любая помощь в выяснении, как кадр функции затрат здесь будет высоко оценен.
novice_coder
1

голосов
0

ответ
149

Просмотры

Matlab table font size

Я написал файл MatLab, который выводит таблицу значений. Сам код работает точно так же, как я хочу, но когда я публикую в формат PDF, формат таблица устанавливает значения последнего столбца в верхней части первой колонны. Я хотел бы сделать размер шрифта меньше, так что моя таблица может выглядеть красиво. Я нашел некоторые родственные идеи по этому вопросу, но не смог реализовать их правильно. Как уменьшить размер шрифта? Вот мой код MATLAB: формат shorte е = @ (х) ехр (х); R1 = @ (ч) (F (H) -f (0)) / ч; R2 = @ (ч) (1 / ч) * ((- 3/2) * F (0) + 2 * F (H) - (1/2) * F (2 * ч)); Е1 = @ (ч) абс (R 1 (ч) -1); Е2 = @ (ч) абс (R 2 (ч) -1); Н = нули (16,1); при г = 1: 16 ч (I) = 10 ^ (- я); в конечном FA = нули (16,1); для г = 1: 16 Ф.А. (я) = F (H (I)); Конец R1 = нули (16,1); при г = 1: 16 r1 (I) = R1 (H (I)); Конец г2 = нули (16,1); при г = 1: 16 г2 (I) = R2 (ч (я)); конечные нули e1 = (16,1); для я = 1: 16 е1 (я) = Е1 (ч (я)); конечные нули e2 = (16,1); при г = 1: 16 е2 (я) = Е2 (Л (я)); конец Т = таблица (Н, R1, е1, г2, е2); T
Matt Robbins
1

голосов
1

ответ
30

Просмотры

Комплексные векторы в Matlab г

Я теряюсь о том, как сделать вектор Xj = sin (пи (J-1) / 10), J = 1, ..., 21 в MATLAB. Кроме того, я пытаюсь сделать вектор Xj = 2-J, J = 0,1, ..., 20. Для последнего я попробовал, который я пытаюсь получить накопленную сумму без для цикла. х = 0:20 s = cumsum (2 ^ -x) Я знаю, что оба должны иметь относительно похожих ответов, но я только понять, как сделать простые векторы и не такие сложными.
Ryan Porter
1

голосов
0

ответ
87

Просмотры

Matlab Codgen error when generating MEX file

У меня возникли некоторые проблемы в создании файла MEX с помощью Matlab Codgen. Я не в состоянии определить причину этой ошибки, я получаю сообщение об ошибке, которое не отражает реальную ситуацию, в моем понимании. Функция, которую я хочу, чтобы преобразовать это в следующем: функция раздел = locateCupPlanInSec (separatorInterval, currentAngle) lowerSep = 1; upperSep = размер (separatorInterval, 2); раздел = 0; % Значение инициализации в то время как (upperSep-lowerSep)> 1 middleSep = (upperSep + lowerSep) / 2; middleAngle = separatorInterval (:, middleSep); если currentSliceAngle> middleAngle lowerSep = middleSep; еще upperSep = middleSep; конец конец секции = lowerSep; Где currentAngle двойной (1x1) и separatorInterval является массивом двойного (1x: РСМД). Когда я использую codgen Я не» т получить любую проблему в Генерирование пробного кода и здания MEX. Но работает тестовый файл с MEX я получаю следующее сообщение об ошибке: с помощью TestBenchManager.executeTestBench (строка 0) Ошибки оценки тестового кода. Вызванный: Undefined функции или переменной «separatorInterval». Ошибка в runTestExecute (строка 0) Ошибка в runTestBench (строка 0) Ошибка в runTestBench (строка 0) Но separatorInterval определяется и я могу видеть его в рабочем пространстве. Что я делаю неправильно? Спасибо Что я делаю неправильно? Спасибо Что я делаю неправильно? Спасибо
Emanuele
1

голосов
1

ответ
69

Просмотры

Слерма идентификатор задачи в качестве аргумента функции от Matlab

Я хочу, чтобы создать массив рабочих мест в Слерме таким образом, таким образом, что она называется функцией Matlab, которая зависит от идентификатора задачи массива. Я попробовал #! / Bin / BASH #SBATCH -j ТЕСТ #SBATCH -p худеет #SBATCH -со #SBATCH -его MATLAB -r "тест ($ {SLURM_ARRAY_TASK_ID})", где test.m функция MATLAB, что я хочу запустить. Это бросить ошибку «Не достаточно аргументов в строке 7 test.m ...» Как я должен это делать?
Veridian Dynamics
1

голосов
1

ответ
95

Просмотры

Получение теоретических вариограмм из параметризованных ковариационной функции (СТК)

Я использую набор инструменты STK в течение нескольких дней, для кригинга полей экологических параметров, то есть в геостатистическом контексте. Я нахожу набор инструментов очень хорошо реализованы и полезные (большое спасибо авторам!), И кригинга предсказания я получаю через STK на самом деле, кажется, прекрасно; Однако, я нахожу себя не в состоянии представить себе модель вариограммы на основе выходных СОК (т.е. оцениваются параметры гауссовых функций процесса / ковариации). Я прилагаю пример рисунок, показывающий эмпирическую вариограмму для простого теста-1D случае и гауссовая модели вариограммы (как правило, используется в геостатистике, см также рисунок) установлены непосредственно к этим данным. На рисунке далее показана модель вариограммы, основанную на выходе СОК, то есть с использованием заранее оцененные параметры модели (модели. пары из stk_param_estim), чтобы получить ковариационной K на целевую сетке лага расстояния и затем преобразование К до semivariance (в соответствии с хорошо известным соотношением semivar = K0-K, где K 0 является ковариационным при нулевой задержке). Я прилагаю простой сценарий, чтобы воспроизвести фигуру и детализацию попытки преобразования. Как вы можете видеть на рисунке, это не делает трюк. Я попробовал несколько других простые примеров и СКИ наборы данных, но модель, полученную с помощью СОК против прямого фитинга никогда не соглашается, а на самом деле, как правило, выглядит гораздо иначе, чем в примере (т.е. диапазон часто кажется, очень разные, в дополнении к подоконнику / sigma2 ; раскомментировать строки 12 в сценарии, чтобы увидеть другой пример). Я также пытался ввести преобразованные параметры СОК в геостатистическую модель (также в сценарии), однако, выход идентичен результату на основе преобразования K выше. Я был бы очень благодарен за вашу помощь! Рисунок, иллюстрирующее отсутствие согласия между semivariograms на основе прямого приступа против преобразования СОК выхода% кодекса воспроизвести рисунок, иллюстрирующий мою проблему получения% вариограммы с выхода СОК. Необходимые только внешние функции те% включены СТК. % TEST DATA - это просто монотонная часть нормального Pdf самородок = 0; Х = [0:20] '; % Координата% Х = [0:50] '; % Раскомментировать эту строку, чтобы увидеть, насколько сильно эти модели могут отличаться для различных случаев испытания V = normpdf (X./10+nugget,0,1); % наблюдались значения covmodel = 'stk_gausscov_iso'; % Модель COVAR, часть СТК панели инструментов variomodel = 'stk_gausscov_iso_vario'; % Модель вариограмма, вложенная функция% GET СТРУКТУРА для выбранного Кригинга (гауссовский процесс) Модель nDim = размера (X, 2); Модель = stk_model (covmodel, nDim); model.lognoisevariance = NaN; % Это делает STK подходит самородок% оценка параметры ковариационной функции [param0, model.lognoisevariance] = stk_param_init (модель, X, V); % Вычислить начальное предположение для параметров ковариационной функции (param0) model.param = stk_param_estim (модель, X, V, param0); % Теперь моделировать функцию ковариации% эмпирическую вариограмму (сырье, биннинг удален для простоты) D = pdist (Х) '; . Semivar_emp = 0,5 * (pdist (V), ') ^ 2. % Теоретическая вариограмма ОТ СКИ% целевой сетка лага расстояние DT = [0: 1: 100]; DT_zero = нули (размер (DT)); % Получить ковариационную матрицу на целевой сетке с использованием СОК оценок Парса попарного = истиной; К = feval (model.covariance_type, model.param, ДТ, DT_zero, -1, попарно); % Преобразовать ковариации к semivariance, т.е. G = С (0) - С (ч) подоконника = ехр (model.param (1)); самородок = ехр (model.lognoisevariance); semivar_stk = подоконника - К + самородок; % -> эта переменная затем нанесены% TEST: FIT гауссовского вариограмма модели непосредственно к эмпирическим вариограмме F = @ (пар) mseval (пар, D, semivar_emp, variomodel); par0 = [10 10 0,1]; % Начальное предположение для Рагза [п, MSE] = fminsearch (F, par0); % Оптимизируют semivar_directfit = feval (variomodel, пар, ТД); % Оценивают% ТЕСТ 2: Использование PARS FROM СОК в качестве входных данных GAUSSIAN вариограммы МОДЕЛИ пара (1) = ехр (model.param (1)); % Подоконник, ПАРАМЕТР (1) = лог (СИГМА ^ 2), где СИГМА стандартное отклонение, пар (2) = SQRT (3) ./ ехр (model.param (2)); Диапазон%, ПАРАМЕТР (2) = - log (Rho), где RHO является параметр диапазона. ---> RHO = ехр (-PARAM (2)) п (3) = ехр (model.lognoisevariance); % Самородок semivar_stkparswithvariomodel = feval (variomodel, пар, ТД); % ГРАФИК вариограмме цифра (); Оставайтесь на линии; участок (D (:), semivar_emp (:). к '); % Наблюдаемая вариограмма, сырой участок (ДТ, semivar_stk, '- B', 'LineWidth', 2); % Теоретическая вариограмма, на сетке участка (ДТ, semivar_directfit, '- г', 'LineWidth', 2); % Тест прямой форме вариограмма участок (DT, semivar_stkparswithvariomodel, '- г', 'LineWidth', 2); % Тест прямой формы вариограмма с использованием Парса из СОК легенды ( «сырой эмпирический semivariance (нет Binned данных здесь для простоты)», ... «Gaussian ЕЙ модели от СОК, т.е. ехр (сигма2) - K + ехр (lognoisevar)» ,. .. 'гауссова модель вариограммы (крепиться непосредственно к semivariance)', ... 'Gaussian модели вариограммы (с использованием трансформированного Params из СОК)'); xlabel ( 'Лаг расстояние',» FontWeight», 'б'); ylabel ( 'Semivariance', 'FontWeight', 'б'); % Вложенные функции% Задача функция для прямой функции подгонки [MSE] = mseval (пар, D, Грау, variomodel) GMOD = feval (variomodel, пар, D); MSE = среднее ((GMOD-Грау) ^ 2.); конец% гауссова модель вариограмма. Функция [semivar] = stk_gausscov_iso_vario (пар, D),% # ок% D: отставание расстояние, с: подоконник, а: диапазон, п: с = самородком пар (1); % Подоконника а = п (2); % Диапазон, если длина (пар)> 2, п = п (3); % Самородок опционально еще, п = 0; конец semivar = N + C * (1 - ехр (-3 * ^ 2. Д. / а ^ 2)...); % Модель конца конец% гауссова модель вариограмма. Функция [semivar] = stk_gausscov_iso_vario (пар, D),% # ок% D: отставание расстояние, с: подоконник, а: диапазон, п: с = самородком пар (1); % Подоконника а = п (2); % Диапазон, если длина (пар)> 2, п = п (3); % Самородок опционально еще, п = 0; конец semivar = N + C * (1 - ехр (-3 * ^ 2. Д. / а ^ 2)...); % Модель конца конец% гауссова модель вариограмма. Функция [semivar] = stk_gausscov_iso_vario (пар, D),% # ок% D: отставание расстояние, с: подоконник, а: диапазон, п: с = самородком пар (1); % Подоконника а = п (2); % Диапазон, если длина (пар)> 2, п = п (3); % Самородок опционально еще, п = 0; конец semivar = N + C * (1 - ехр (-3 * ^ 2. Д. / а ^ 2)...); % Модель конца
mdh
1

голосов
0

ответ
56

Просмотры

matlabs директива латекса создает форму, ведущую к ошибкам при помощи латексного переводчиком

Я stumpled по следующему вопросу: я обратился символическое выражение его латексной форме, как следующее: >> латекса (Sym (@ (х) воздушный (х))) ANS = «\ текст {воздушный} \ влево (0, х \ справа):»Это пример встроено функции, без латекса эквивалент (в отличие от греха, соз ...). Попытка использовать это выражение в легенде с помощью легенды ({ «$ \ текст {воздушный} ... $»}, «переводчик», «Латекс»), я получаю следующее сообщение об ошибке: вектор символов должен иметь действительный синтаксис интерпретатора: $ е (х) = \ текст {воздушный} \ влево (0, х \ справа) $ Это вызвано текстом, предоставляемой amsmath пакет, который не загружен интерпретатором как-то. Так что я могу это исправить, заменив текст директивы с textrm: заменить (латекс (Sym (е)), «\ текст {воздушный}», «\ textrm {воздушный}») Но это не должно быть необходимости. Я ожидаю, что строка производится с помощью директивы латекса в MATLAB, чтобы быть обрабатываемой латексной переводчика идет с (или связан с) MATLAB. Есть ли у вас какие-либо идеи о том, как это исправить, например, о том, как загрузить пакет amsmath? Да, это может быть возможно, но очень сложно, поэтому я не искал решения Hacky нагрузки это как-то. Там, как представляется, возможность добавить собственный стиль в то время как издательство, но я не мог найти ничего, связанное с легендами или фигурной манипуляцией, это было бы лучшим подход. У вас есть какие-либо идеи по этому поводу? Там, как представляется, возможность добавить собственный стиль в то время как издательство, но я не мог найти ничего, связанное с легендами или фигурной манипуляцией, это было бы лучшим подход. У вас есть какие-либо идеи по этому поводу? Там, как представляется, возможность добавить собственный стиль в то время как издательство, но я не мог найти ничего, связанное с легендами или фигурной манипуляцией, это было бы лучшим подход. У вас есть какие-либо идеи по этому поводу?
Nico Albers
1

голосов
0

ответ
63

Просмотры

Оценка параметров системы ОДУ с помощью нескольких наборов данных

У меня есть система 2 ОДЫ, и я хочу, чтобы соответствовать этой системе к некоторым данным, чтобы оценить некоторые параметры модели. Есть два набора данных. Я хочу, чтобы соответствовать модели для этих двух наборов данных одновременно и параметры должны быть такими же, когда установлены для данных. Данные у меня дается как сумма за определенный период. К примеру, в data1 первый элемент является суммой состояния А в течение периода времени от 2-4 часов. Таким образом, для каждого интервала tiem у меня есть в общей сложности за этот период времени в каждом наборе данных. Из-за этого время я одновременно прилегают к двум наборам данных я также должен пройти через из интервалов времени (4 2-4,5-7,8-10,11-13). Если данные были приведены только для одного непрерывного периода времени, например, время = 2: 13 Я знаю, как оценить параметры. Но теперь я не уверен, как я реализовал это правильно. Это код, который я написал. % данных т = [2 3 4 5 6; 7; 8 9 10; 11 12 13]; data1 = [5,399537437; 6,762059387; 7,34552533; 7,675700967]; data2 = [0,153279989125067; 7,395870359956480; 3,519156383296502; 2,553056632299227]; % Начальные предположения к0 = [0,001; 0,001; 0,001]; фунт = [0,0.0002,0]; UB = Inf * те (1,3); х = {т, data1, data2}; [FittedVal, fval] = fmincon (@ (к) SSQ (к, х), к0, [], [], [], [], б, UB) функция ошибки = SSQ (к, х) = время х { 1,1}; data1 = х {1,2}; data2 = х {1,3}; Ошибка = 0; для него = 1: 4 = оборудованной модели (K, время (это, :)); ошибка = ошибка + (сумма ((установлен-data1 (она)) ^ 2).) + (сумма ((установлен-data2 (она)) ^ 2).); конец конец функция вывод = модель (к, время) b0 = [0; 3,13];% начальные условия [время, значение] = ode45 (@ уравнения, время, b0); Функция S = Уравнения (T, Y) S = нули (2,1); Rep = 0,204; аг = 0,3368; проведение = 10 ^ 9; carrying2 = 1 * 10 ^ 8; с (1) = (Rep * у (1)) * (1- (у (1) / переноски)) - к (2) * аг * у (1) * (1- (у (2) / carrying2) ) + к (3) * у (2); с (2) = к (2) * аг * у (1) * (1- (у (2) / carrying2)) + к (1) * у (2) -k (3) * у (2); Конец выходного значения = (:, 2) + (значения: 1); конец Подходит для всех точек данных я использую для цикла. Это правильный путь идти о нем? В этом я не уверен, если я должен накапливать ошибки в течение цикла. Кроме того, поскольку эти моменты времени связаны, что когда я начинаю период от 5-7, данные из 2-4 должны иметь влияние, я хочу, чтобы изменить начальные условия для ода решателя ode45 с конечным значением результаты модели предыдущего момента времени, будучи в качестве начальных условий на следующий период времени. Как я могу это сделать, потому что в данный момент в каждой для итерации цикла у меня есть b0 = [0; 3,13] с (2) = к (2) * аг * у (1) * (1- (у (2) / carrying2)) + к (1) * у (2) -k (3) * у (2); Конец выходного значения = (:, 2) + (значения: 1); конец Подходит для всех точек данных я использую для цикла. Это правильный путь идти о нем? В этом я не уверен, если я должен накапливать ошибки в течение цикла. Кроме того, поскольку эти моменты времени связаны, что когда я начинаю период от 5-7, данные из 2-4 должны иметь влияние, я хочу, чтобы изменить начальные условия для ода решателя ode45 с конечным значением результаты модели предыдущего момента времени, будучи в качестве начальных условий на следующий период времени. Как я могу это сделать, потому что в данный момент в каждой для итерации цикла у меня есть b0 = [0; 3,13] с (2) = к (2) * аг * у (1) * (1- (у (2) / carrying2)) + к (1) * у (2) -k (3) * у (2); Конец выходного значения = (:, 2) + (значения: 1); конец Подходит для всех точек данных я использую для цикла. Это правильный путь идти о нем? В этом я не уверен, если я должен накапливать ошибки в течение цикла. Кроме того, поскольку эти моменты времени связаны, что когда я начинаю период от 5-7, данные из 2-4 должны иметь влияние, я хочу, чтобы изменить начальные условия для ода решателя ode45 с конечным значением результаты модели предыдущего момента времени, будучи в качестве начальных условий на следующий период времени. Как я могу это сделать, потому что в данный момент в каждой для итерации цикла у меня есть b0 = [0; 3,13] Это правильный путь идти о нем? В этом я не уверен, если я должен накапливать ошибки в течение цикла. Кроме того, поскольку эти моменты времени связаны, что когда я начинаю период от 5-7, данные из 2-4 должны иметь влияние, я хочу, чтобы изменить начальные условия для ода решателя ode45 с конечным значением результаты модели предыдущего момента времени, будучи в качестве начальных условий на следующий период времени. Как я могу это сделать, потому что в данный момент в каждой для итерации цикла у меня есть b0 = [0; 3,13] Это правильный путь идти о нем? В этом я не уверен, если я должен накапливать ошибки в течение цикла. Кроме того, поскольку эти моменты времени связаны, что когда я начинаю период от 5-7, данные из 2-4 должны иметь влияние, я хочу, чтобы изменить начальные условия для ода решателя ode45 с конечным значением результаты модели предыдущего момента времени, будучи в качестве начальных условий на следующий период времени. Как я могу это сделать, потому что в данный момент в каждой для итерации цикла у меня есть b0 = [0; 3,13] Я хочу изменить начальные условия для ода решателя ode45 с конечным значением результатов модели предыдущего момента времени, будучи в качестве начальных условий на следующий период времени. Как я могу это сделать, потому что в данный момент в каждой для итерации цикла у меня есть b0 = [0; 3,13] Я хочу изменить начальные условия для ода решателя ode45 с конечным значением результатов модели предыдущего момента времени, будучи в качестве начальных условий на следующий период времени. Как я могу это сделать, потому что в данный момент в каждой для итерации цикла у меня есть b0 = [0; 3,13]
sam_rox
1

голосов
1

ответ
94

Просмотры

векторизации точки на линии / сегмента / функции луча расстояния (MATLAB)

Я использую функцию здесь для того, чтобы вычислить расстояния нескольких лучей на несколько точек в пространстве. То, как я это делаю сейчас, формируя два для петель, как вы можете заметить, в коде ниже, так как функция distancePoint2Line () не векторизации. Тем не менее, когда я должен через количество лучей вокруг 2000-3000 лучей и найти их расстояние в количестве 6000-7000 точек в пространстве это занимает много времени. Поэтому я хотел бы, если можно векторизации distancePoint2Line () для того, чтобы оптимизировать время обработки. Вход функции существующей distancePoint2Line () является начальной точкой, конечной точкой линии, сегмент или луча, независимой точки в пространстве и типа линии и кратко определяется как: функции [д, С, t0] = distancePoint2Line (А, В, Р, varargin)% - определение Linetype, если (Наргин < 4) Linetype = 'строка'; Linetype = 'строка'; остальное Linetype = varargin {1}; Конец %% Алгоритм% Направление вектора% М = В - А; М = В; % Запуск параметр t0 определяет точку пересечения линии через А и В% и перпендикуляре через P t0 = точку (М, Р - А) / точку (М, М); % Точка пересечения перпендикуляра, и линией, проходящей через А и B intersectPnt = A + t0 * M; переключить нижнюю (LineType) случай «строку»% линии: точка пересечения всегда ближе. С = intersectPnt; случай «сегмент»% Отрезок, если точка t0 <0% Старт ближе. С = А; ElseIf t0> 1% конечная точка находится ближе всего. С = В; еще точка% Точка пересечения находится ближе всего. С = intersectPnt; конец случай " Рэя% Ray, если точка t0 <0% Старт ближе. С = А; еще точка% Точка пересечения находится ближе всего. С = intersectPnt; конец конец% Расстояние между независимой точкой и ближайшей точкой D = норма (ПК); конец Так что, если я считаю, что у меня есть следующий рисунок: где зеленая точка мое происхождение, синие лучи лучи, брошенные в пространстве от происхождения и красных точек являются отдельными точками в пространстве, для которого я хочу, чтобы измерить их расстояние для каждого луча так, как я делаю это до сих пор является следующее: начало = [10 10 0]; лучей = [0,0420891179448099 -0,246431544552697 0.968245836551854; 0,310536647204174 0,682690992135673 0,661437827766148; -0,746496065726383 -0,0724128707829756 0,661437827766148; +0,435959418522208 -0. 610278121352698 0,661437827766148]; mypts = [4579 4246 1962; 3961 4670 3277; 4796 3393 856; 3277 3787 3529; 179 3713 160]; При J = 1: размер (лучи, 1) для I = 1: размер (mypts, 1) [D (I, J), C (I, J :), t0 (I, J)] = (distancePoint2Line происхождения , лучи (J, :), mypts (J, :), 'луч'); конец конец Однако, как сказано выше реализация является слишком медленным, когда число лучей и отдельных точек увеличивается. Поэтому я попытался изменить функцию distancePoint2Line (), так что я векторизации обработки и передачи в качестве аргументов точку начала координат, все точки к концу, и все отдельные точки на один раз. [D, C, tt0] = distancePoint2LineVec (происхождение, лучи, mypts, 'луч'); Ниже моя модификация до получения точки пересечения: функция [D, C, t0] = distancePoint2LineVec (А, В, Р, varargin)% - определение Linetype, если (Наргин <4) Linetype = 'строка'; Linetype = 'строка'; остальное Linetype = varargin {1}; Конец %% Алгоритм% Направление вектора% М = В - А; % М = bsxfun (@minus, B, A); М = В; % Запуск параметра t0 определяет точку пересечения линии через А и В% и перпендикуляром через Р% t0 = точка (М, Р - А) / точка (М, М); К = bsxfun (@minus, Р, А); V = М * К '.; U = M * M '. t0 = bsxfun (@rdivide, V Diag (U)); t0 = t0 (:); % Точка пересечения перпендикуляра и линией, проходящей через А и В% intersectPnt = А + t0 * М; мул = М. * repmat (t0, [1 размер (М, 1)]); 1% конечная точка находится ближе всего. С = В; еще точка% Точка пересечения находится ближе всего. С = intersectPnt; конец случай 'луч' % Ray, если t0 < 0% Начальная точка находится ближе всего. С = А; еще точка% Точка пересечения находится ближе всего. С = intersectPnt; конец конец% Расстояние между независимой точкой и ближайшей точкой D = норма (ПК); конец, но дело в том, что я получаю сообщение об ошибке там, поскольку размеры не соответствуют для размножения. Я искал его немного, и кажется, что не существует прямой способ сделать это. Любые идеи, как эффективно решить эту проблему? Благодарю. Я искал его немного, и кажется, что не существует прямой способ сделать это. Любые идеи, как эффективно решить эту проблему? Благодарю. Я искал его немного, и кажется, что не существует прямой способ сделать это. Любые идеи, как эффективно решить эту проблему? Благодарю.
ThT
1

голосов
0

ответ
90

Просмотры

Как подготовить несколько гауссовой смеси модели в среде MATLAB

Я работаю для голосовой аутентификации. Во-первых, я извлек голосовые функции от пользователя, как MFCC. После этого, я использую функцию «gmm_estimate», чтобы получить среднее значение, дисперсию и wights для формирования GMM. Сейчас, скажем у меня есть несколько образцов голоса с тем же пользователем, и я сформировал GM Модель для каждого из них. После того, что я буду обучать / приспосабливать их все в 1 GM модель и по сравнению с тестированием голосом из пользовательского ввода. То, что я до сих пор используют «fitgmdist» функцию, но не с этой ошибкой: «Ошибка при помощи gmcluster (строка 197) неупитанный ковариационная создан на итерации 4.» Функция MFCC_feat_inject (сиг, features_mfcc_file, па) No_of_Gaussians = 12; нагрузка (features_mfcc_file); не% no_of_fe будет иметь не сэкономленный признак% матриц fé будет иметь функцию no_of_fe = no_of_fe + 1; LEN = длина (на); имя (no_of_fe, 1: LEN) = символ (на); к = melcepst (сиг, 8000); [Mu_train, sigma_train, c_train] = gmm_estimate (Fe (:, 5:12)», No_of_Gaussians, 20); % Означают FEA {no_of_fe, 1} = mu_train; % Дисперсия FEA {no_of_fe, 2} = sigma_train; % веса FEA {no_of_fe, 3} = c_train; сохранить (features_mfcc_file,, 'имя' 'no_of_fe', 'FEA');
Jin Sheng
1

голосов
0

ответ
19

Просмотры

как преобразовать C / C ++ цикл, содержащий два исходных переменных в цикле Matlab

мне нужно преобразовать C цикл с 2-х переменных (см 2-й цикл в предусмотренном коде) в MATLAB .. для (I = 2; я
Xralier
1

голосов
1

ответ
1.1k

Просмотры

Считывание данных из Arduino в Matlab через последовательный порт

Привет, ребята Я новичок в Matlab. Я хотел бы, чтобы прочитать данные, выводимые из Arduino через последовательный порт. Данные выводятся на определенный промежуток времени с запятой, отделяющей / пространства переменных. Как прочитать данные и построить переменную на Matlab? Последовательный порт, как это: 1,1 3,2 1,2 3,1 1,3 3,3 ... Спасибо за вашу помощь. Это код, который я получил для чтения данных только одной переменной без любого пространства. Как изменить, что для чтения данных из более чем одной переменной? закрыть все; очистить все; CLC; fclose ( 'все'); удалить (instrfindall); % USER определенных свойств S = последовательный ( 'СОМ5', 'бод', 9600); plotTitle = 'HCSR04'; xLabel = 'Время (с)'; yLabel = 'Расстояние (см)'; plotGrid = 'на'; Задержка = 0,01; % Определение функции Переменного время = 0; расстояние = 0; кол = 0; % Установка участка plotGraph = участок (время, расстояние); Название (plotTitle, 'FontSize', 25); xlabel (xLabel, 'FontSize', 15); ylabel (yLabel, 'FontSize', 15); Сетка (plotGrid); Еореп (ы); крестики в то время как ishandle (plotGraph) расстояние = str2num (fscanf (ов)) = кол-кол + 1; Время (количество) = TOC; расстояние (количество) = расстояние; Набор (plotGraph, 'XData', время, 'YData', расстояние); Ось ([время (количество) -10 раз (счет) 0 10]); пауза (задержка); конец fclose (ы); очистить все; закрыть все; Я попробовал это один, но, похоже, не работает. закрыть все; очистить все; CLC; fclose ( 'все'); удалить (instrfindall); % USER определенных свойств S = последовательный ( 'СОМ3', 'бод', 9600); plotTitle = 'Испытание датчика'; xLabel = 'Время (с)'; yLabel = 'Расстояние (см)'; plotGrid = 'на'; Задержка = 0,01; % Определение функции Переменного время = 0; distance1 = 0; distance2 = 0; кол = 0; % Установка участка plotGraph (1) = участок (время, distance1); plotGraph (2) = участок (время, distance2); Название (plotTitle, 'FontSize', 25); xlabel (xLabel, 'FontSize', 15); ylabel (yLabel, 'FontSize', 15); Сетка (plotGrid); Еореп (ы); крестики, а ishandle (plotGraph) ул = fscanf (ы); расстояние = TextScan (ул, '% F% F'); кол = кол + 1; Время (количество) = TOC; dist1 (количество) = расстояние (1); dist2 (количество) = расстояние (2); Набор (plotGraph (1), 'XData', время, 'YData', dist1); Набор (plotGraph (2), 'XData', время, 'YData', dist2); Ось ([время (количество) -10 раз (счет) 0 10]); пауза (задержка); конец fclose (ы); очистить все; закрыть все; % Установка участка plotGraph (1) = участок (время, distance1); plotGraph (2) = участок (время, distance2); Название (plotTitle, 'FontSize', 25); xlabel (xLabel, 'FontSize', 15); ylabel (yLabel, 'FontSize', 15); Сетка (plotGrid); Еореп (ы); крестики, а ishandle (plotGraph) ул = fscanf (ы); расстояние = TextScan (ул, '% F% F'); кол = кол + 1; Время (количество) = TOC; dist1 (количество) = расстояние (1); dist2 (количество) = расстояние (2); Набор (plotGraph (1), 'XData', время, 'YData', dist1); Набор (plotGraph (2), 'XData', время, 'YData', dist2); Ось ([время (количество) -10 раз (счет) 0 10]); пауза (задержка); конец fclose (ы); очистить все; закрыть все; % Установка участка plotGraph (1) = участок (время, distance1); plotGraph (2) = участок (время, distance2); Название (plotTitle, 'FontSize', 25); xlabel (xLabel, 'FontSize', 15); ylabel (yLabel, 'FontSize', 15); Сетка (plotGrid); Еореп (ы); крестики, а ishandle (plotGraph) ул = fscanf (ы); расстояние = TextScan (ул, '% F% F'); кол = кол + 1; Время (количество) = TOC; dist1 (количество) = расстояние (1); dist2 (количество) = расстояние (2); Набор (plotGraph (1), 'XData', время, 'YData', dist1); Набор (plotGraph (2), 'XData', время, 'YData', dist2); Ось ([время (количество) -10 раз (счет) 0 10]); пауза (задержка); конец fclose (ы); очистить все; закрыть все; ylabel (yLabel, 'FontSize', 15); Сетка (plotGrid); Еореп (ы); крестики, а ishandle (plotGraph) ул = fscanf (ы); расстояние = TextScan (ул, '% F% F'); кол = кол + 1; Время (количество) = TOC; dist1 (количество) = расстояние (1); dist2 (количество) = расстояние (2); Набор (plotGraph (1), 'XData', время, 'YData', dist1); Набор (plotGraph (2), 'XData', время, 'YData', dist2); Ось ([время (количество) -10 раз (счет) 0 10]); пауза (задержка); конец fclose (ы); очистить все; закрыть все; ylabel (yLabel, 'FontSize', 15); Сетка (plotGrid); Еореп (ы); крестики, а ishandle (plotGraph) ул = fscanf (ы); расстояние = TextScan (ул, '% F% F'); кол = кол + 1; Время (количество) = TOC; dist1 (количество) = расстояние (1); dist2 (количество) = расстояние (2); Набор (plotGraph (1), 'XData', время, 'YData', dist1); Набор (plotGraph (2), 'XData', время, 'YData', dist2); Ось ([время (количество) -10 раз (счет) 0 10]); пауза (задержка); конец fclose (ы); очистить все; закрыть все; XData», время, 'YData', dist1); Набор (plotGraph (2), 'XData', время, 'YData', dist2); Ось ([время (количество) -10 раз (счет) 0 10]); пауза (задержка); конец fclose (ы); очистить все; закрыть все; XData», время, 'YData', dist1); Набор (plotGraph (2), 'XData', время, 'YData', dist2); Ось ([время (количество) -10 раз (счет) 0 10]); пауза (задержка); конец fclose (ы); очистить все; закрыть все;

Просмотр дополнительных вопросов