Нахождение, что кривая соответствует данным

У меня были подобные проблемы со звуком.

После установки и выполнения инструмента xfce4-микшера:

sudo Кв. - получает xfce4-микшер gstreamer0.10-alsa

установки, звук присутствовал.

существует также эта регистрация: , Как установить gstreamer 1.0 в человечности 12.04

10
задан Nosredna 31 August 2009 в 22:52
поделиться

6 ответов

Чтобы ответить на ваш вопрос в общем смысле (относительно оценки параметров в R) без учета специфики указанных вами уравнений, я думаю, вы ищете nls () или optim (). .. "nls" - мой первый выбор, поскольку он предоставляет оценки ошибок для каждого оцениваемого параметра, а когда он не работает, я использую "optim". Если у вас есть переменные x, y:

out <- tryCatch(nls( y ~ A+B*x+C*x*x, data = data.frame(x,y), 
                start = c(A=0,B=1,C=1) ) ,
                error=function(e) 
                optim( c(A=0,B=1,C=1), function(p,x,y)  
                      sum((y-with(as.list(p),A + B*x + C*x^2))^2), x=x, y=y) )

для получения коэффициентов, что-то вроде

getcoef <- function(x) if(class(x)=="nls") coef(x) else x$par
getcoef(out)

Если вам нужны стандартные ошибки в случае 'nls',

summary(out)$parameters

Файлы справки и сообщения списка рассылки r-help содержат много обсуждений относительно конкретных алгоритмов минимизации, реализуемых каждым из них (значение по умолчанию, используемое в каждом примере выше), и их соответствия конкретной форме рассматриваемого уравнения. Определенные алгоритмы могут обрабатывать ограничения коробки, а другая функция, называемая constrOptim (), будет обрабатывать набор линейных ограничений. Этот веб-сайт также может помочь:

http://cran.r-project.org/web/views/Optimization.html

8
ответ дан 3 December 2019 в 19:34
поделиться

Похоже, вы могли бы захотеть сделать эти коммиты в ветке, отличной от master, а затем объединить эту ветвь как с master, так и со второй ветвью:

git checkout working-branch
<do some work>
git commit
git checkout master
git merge working-branch
git checkout second-branch
git merge working-branch

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

Я решительно рекомендую вам принять рабочий процесс, в котором это делается путем слияния, как я описал выше, но чтобы ответить на заданный вами вопрос, если вам абсолютно необходимо поработать над мастером и выбором вишен, вы можете написать себе небольшой скрипт, например:

#!/bin/bash
# take two arguments:
# 1. other branch to put commits on
# 2. number of commits to cherry-pick from master    

if ! git checkout $1; then
    exit
fi
git rev-list --reverse -n $2 master |
while read commit; do
    if ! git cherry-pick $commit; then
        exit
    fi
done

Очевидно, есть способы сделать скрипт более надежным, например, добавив возможность возобновления после выбора вишни, чьи патчи не применяются должным образом, но это только начало.

Конечно, вы можете повозиться с тем, как вы используете git-rev-list для выбора коммитов. Вы даже можете передать все аргументы, кроме первого, в git-rev-list, чтобы вы могли выполнить cherries-pick -n 5 master или cherries-pick release_tag. .master или что угодно. Взгляните на его страницу руководства !

Вы также можете использовать git-rebase , как было предложено в другом месте, но поскольку вы на самом деле не хотите перемещать мастер, вы закончите делать что-то вроде этого:

8
ответ дан 3 December 2019 в 19:34
поделиться

Ознакомьтесь с GNU Octave - между его polyfit () и решателем нелинейных ограничений должно быть возможно сконструировать что-то подходящее для вашей проблемы.

1
ответ дан 3 December 2019 в 19:34
поделиться

Вы, вероятно, не найдете ни одной процедуры с гибкостью, подразумеваемой в ваших примерах (многочлены и рациональные функции, использующие одну и ту же процедуру), не говоря уже о той, которая будет анализировать строку, чтобы выяснить какое уравнение подобрать.

Для вашего первого примера подойдет подборщик полиномов методом наименьших квадратов. (Вам решать, какой полином степени использовать - квадрадический, кубический, квартичный и т. Д.). Для рациональной функции, такой как ваш второй пример, вам, возможно, придется «свернуть свою собственную», если вы не можете найти подходящую библиотеку. Также имейте в виду, что для аппроксимации вашей «реальной» функции можно использовать полином достаточно высокой степени, если вам не нужно экстраполировать за пределы набора данных, к которому вы подходите.

Как другие отметили, есть другие, более общие алгоритмы оценки параметров, которые также могут оказаться полезными. Но эти алгоритмы не совсем «подключи и работай»: они обычно требуют, чтобы вы написали несколько вспомогательных подпрограмм и предоставили список начальных значений для параметров модели. Подобные алгоритмы могут расходиться или застревать в локальном минимуме или максимуме из-за неудачного выбора начальных оценок параметров.

1
ответ дан 3 December 2019 в 19:34
поделиться

В R это довольно просто.

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

Затем вы вызываете ее как out = optim (1, err_fn)

, где err_fn равно

err_fn = function(A) {
    diff = 0;
    for(i in 1:data_length){
      x = eckses[i];
      y = data[i];
      model_y = A*x;
      diff = diff + ( y - model_y )^2
    }
    return(diff);
}

Это просто предполагает, что у вас есть вектор x и y значения в eckses и data. Измените строку model_y по своему усмотрению, даже добавьте дополнительные параметры.

Он отлично работает с нелинейным, я использую его для четырехмерных кривых e ^ x, и это очень быстро. Выходные данные включают значение ошибки в конце подгонки, которое является мерой того, насколько хорошо оно подходит, выраженное как сумма квадратов разностей (в моем err_fn). Если вам НЕОБХОДИМО принять модель в виде строки, вы можете настроить свой пользовательский интерфейс на построение всего процесса подгонки модели в виде сценария R и загрузить его для запуска. R может брать текст из STDIN или из файла, поэтому не должно быть слишком сложно создать строковый эквивалент этой функции и автоматически запустить его.

1
ответ дан 3 December 2019 в 19:34
поделиться

Брофилд,

У меня была точно такая же проблема, и я просто наткнулся на решение, которое не требует преобразования исходных строк в широкие символы и обратно: сохраните исходный файл как UTF-8 без подписи и VC2008 оставит его в покое. Отлично сработало, когда я придумал опустить подпись. Подводя итог:

Unicode (UTF-8 без подписи) - кодовая страница 65001, не выдает предупреждение c4566 в VC2008 и не заставляет VC вмешиваться в кодировку, а кодовая страница 65001 (UTF-8 с подписью) выдает c4566 (как вы выяснили).

Надеюсь, что еще не поздно помочь вам, но это может ускорить работу вашего приложения VC2008 и удалить обходной путь.

но если вы пытаетесь найти коэффициенты второй упомянутой вами функции, то, возможно, GA будут работать - особенно если вы используете нестандартные метрики для оценки наилучшего соответствия. например, если вы хотите найти коэффициенты «(A + Bx + Cx ^ 2) / (Dx + Ex ^ 2)», чтобы сумма квадратов разностей между вашей функцией и данными была минимальной и ] что существует некоторое ограничение на длину дуги результирующей функции, то стохастический алгоритм может быть хорошим способом приблизиться к этому.

некоторые предостережения: 1) стохастические алгоритмы не гарантируют наилучшего решения , но часто они будут очень близки. 2) вы должны быть осторожны с стабильностью алгоритма.

в более длинной заметке,

1
ответ дан 3 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: