11 июля. Москва. Ожидается прохладная облачная с прояснениями погода
- Информация о материале
- Автор: Super User
- Родительская категория: Погода
- Категория: Альтернативная погода от wow-only.ru
- Просмотров: 4171
Ожидаем смены погоды на облачную с прояснениями, "расчистка" может произойти к ночи и тогда этой ночью будет довольно прохладно, до +8.
Полиноминальная и дробная аппроксимация тригонометрических функций. От float к FIXED
- Информация о материале
- Автор: Super User
- Родительская категория: Заметки
- Категория: Программирование микроконтроллеров
- Просмотров: 5126
(заметка будет дописываться)
Цель: аппроксимация функции asin целочисленными линейными полиномами совместно с табличным методом с целью увеличения скорости вычислений и уменьшения расхода памяти при вычислениях на процессоре с фиксированной точкой PIC18F. Нотация представления 1.0 float eq 16384 int.
1. Разобьем функцию в диапазоне аргументов x= 0.. 1.0 на более мелкие участки, длина которых обратно пропорциональна log2N. Для этого используем MATLAB.
Весь участок выглядит так, как показано на рисунке 1.
Рис.1 Арксинус (в радианах) на участке x= 0.. 1.0. arcsin(x).
M-файл:
clear;
indx=0;
for argum= 0.00:1./16384.:16384./16384.
%нумерация для массивов, которые будем использовать для аппроксимации
insideidx0 = mod(indx,8192)+1;
insideidx1 = mod(indx,4096)+1;
insideidx2 = mod(indx,2048)+1;
insideidx3 = mod(indx,1024)+1;
insideidx4 = mod(indx,512)+1;
insideidx5 = mod(indx,256)+1;
insideidx6 = mod(indx,128)+1;
insideidx7 = mod(indx,64)+1;
insideidx8 = mod(indx,32)+1;
%сложность аппроксикации возникает в конце, где возрастает нелинейность, переворачиваем нумерацию для построения условий
indx_c = 16384 - indx ;
if(indx_c > 8192)
asinout_0(insideidx0) = asin(argum);
xcoord_0(insideidx0) = argum;
else
if(indx_c > 4096)
asinout_1(insideidx1) = asin(argum);
xcoord_1(insideidx1) = argum;
else
if(indx_c > 2048)
asinout_2(insideidx2) = asin(argum);
xcoord_2
else
if (indx_c > 1024)
asinout_3(insideidx3) = asin(argum);
xcoord_3(insideidx3) = argum;
else
if (indx_c > 512)
asinout_4(insideidx4) = asin(argum);
xcoord_4(insideidx4) = argum;
else
if (indx_c > 256)
asinout_5(insideidx5) = asin(argum);
xcoord_5(insideidx5) = argum;
else
if (indx_c > 128)
asinout_6(insideidx6) = asin(argum);
xcoord_6(insideidx6) = argum;
else
if (indx_c > 64)
asinout_7(insideidx7) = asin(argum);
xcoord_7(insideidx7) = argum;
else
if (indx_c > 32)
asinout_8(insideidx8) = asin(argum);
xcoord_8(insideidx8) = argum;
font-size: 10.0pt; font-family: 'Courier New'; color: blue; background: white; mso-highlight: white; mso-ansi-language: EN-US;
end
end
end
end
end
end
end
end
end
indx = indx+1;
full_asin(indx)= asin(argum);
xcoord_full(indx) = argum;
end
Теперь мы имеем 8 массивов с длинами, кратными 2n : 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32. Внутри этих участков функция ведёт себя близко к линейной.
2. Используем Curve Fitting Tool для аппроксимации полиномов (1-й степени):
Полином первой степени имеет вид:
f(x) = p1*x + p2
>> cftool
Рис.2 Настройки аппроксимации
Подробнее: Полиноминальная и дробная аппроксимация тригонометрических функций. От float к FIXED
Расчёт и измерение индуктивности. Индуктивность по известной частоте и ёмкости в колебательном контуре
- Информация о материале
- Автор: Super User
- Родительская категория: Заметки
- Категория: Лаборатория
- Просмотров: 5694
Цель: определить количество витков, требуемых для получения определённой индуктивности на отдельно взятом сердечнике.
Измерить индуктивность можно косвенным способом. Например, использовав параллельный колебательный контур.
Итак:
1. Берём сердечник, провод, ёмкость с хорошими характеристиками (NPO, C0G)
2. Наматываем известное количество витков провода на сердечник (например, N0=30).
3. Припаиваем параллельно полученной индуктивности конденсатор (в нашем примере 1.5 нФ, желательно измерить ёмкость по-точнее) и 2 резистора (в нашем примере по 82 кОм).
Генератор сигналов и осциллограф подключаем согласно рисунку
Осциллограф подключается с включенным делителем на щупе. Изменяя частоту генератора, находят точку резонанса (максимальная амплитуда сигнала на экране осциллографа).
Резистивная развязка должна быть достаточной, чтобы обеспечить высокую добротность контура, что нужно для определения резонансной частоты.
Частоту записываем.
Теперь данных достаточно для написания несложной функции на M-языке для MATLAB, например, чтобы автоматизировать расчёты.
function N1 = induct(L_target)
N0=30;
f=1.598*10^6; %измеренная резонансная частота
C=1.458*10^-9; %измеренная заранее ёмкость
w=2*pi*f;
L=1/((w^2)*C); % индуктивность катушки с N0 витков
N1 = (sqrt(L_target/L))*N0; % искомое количество витков
end
В качестве примера расчёта:
>> induct(3.88*10^-6)
ans =
22.6554
Т.е. примерно 23 витка для индуктивности в 3.88 мкГн.
23 июня 2014. Москва. Ожидаются дожди. Вероятность грозы
- Информация о материале
- Автор: Super User
- Родительская категория: Погода
- Категория: Альтернативная погода от wow-only.ru
- Просмотров: 3993
Близится достижение "ямы". Одновременно, в связи с некоторым прогревом воздуха на фоне пониженного атмосферного давления могут формироваться локальные грозовые фронты. На выходе из "ямы", если он будет резким, можно ожидать усиления ветра.
19,20 июня 2014. Москва. Облачно с прояснениями.
- Информация о материале
- Автор: Super User
- Родительская категория: Погода
- Категория: Альтернативная погода от wow-only.ru
- Просмотров: 4294
Давление несколько подросло. Сегодня и завтра ожидается прохладная погода с переменной облачностью. Возможны кратковременные дожди.
В целом, атмосферное давление продолжает оставаться на невысоком уровне, однако направление ветра меняется, можно ожидать некоторого потепления на 20 июня.
Страница 166 из 170