<?xml version="1.0" encoding="utf-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Форум программистов и сисадминов Киберфорум - Блоги - Записки сумасшедшего шляпника.. Автор Зосима</title>
		<link>https://www.cyberforum.ru/blogs/261218/</link>
		<description>КиберФорум - форум программистов, системных администраторов, администраторов баз данных, компьютерный форум, форум по электронике и бытовой технике, обсуждение софта. Бесплатная помощь в решении задач по программированию и наукам, решение проблем с компьютером, операционными системам</description>
		<language>ru</language>
		<lastBuildDate>Wed, 06 May 2026 19:31:20 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>60</ttl>
		<image>
			<url>https://www.cyberforum.ru//cyberstatic.net/images/misc/rss.jpg</url>
			<title>Форум программистов и сисадминов Киберфорум - Блоги - Записки сумасшедшего шляпника.. Автор Зосима</title>
			<link>https://www.cyberforum.ru/blogs/261218/</link>
		</image>
		<item>
			<title>Охват точек линией минимальной длинны в MATLAB</title>
			<link>https://www.cyberforum.ru/blogs/261218/7294.html</link>
			<pubDate>Wed, 06 Oct 2021 06:38:19 GMT</pubDate>
			<description>Как-то давно писал программку и вот она вновь пригодилась. 
Может еще кому будет полезна) 
Суть в...</description>
			<content:encoded><![CDATA[<div>Как-то давно писал программку и вот она вновь пригодилась.<br />
Может еще кому будет полезна)<br />
Суть в чем? Есть несколько точек и нужно охватить их всех так, чтобы линия имела минимальный периметр.<br />
По-научному такие линии называются &quot;минимально выпуклая оболочка&quot;, почитать о них можно например на <a rel="nofollow noopener noreferrer" href="https://habr.com/ru/post/144921/" target="_blank" title="https://habr.com/ru/post/144921/">хабре</a>. Собственно из этой статьи я и взял алгоритм.<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="224091069"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="224091069" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
</pre></td><td class="de1"><pre class="de1"><span class="kw2">clear</span>, <span class="kw2">clc</span>
<span class="co1">% случайные точки</span>
N = <span class="nu0">10</span>;
x = <span class="kw2">randn</span><span class="br0">&#40;</span>N,<span class="nu0">1</span><span class="br0">&#41;</span>;
y = <span class="kw2">randn</span><span class="br0">&#40;</span>N,<span class="nu0">1</span><span class="br0">&#41;</span>;
<span class="kw2">plot</span><span class="br0">&#40;</span>x,y,<span class="co2">'.'</span><span class="br0">&#41;</span> <span class="co1">% рисуем исходные точки</span>
<span class="kw2">hold</span> on 
p = x + <span class="re0">1i</span>*y; <span class="co1">% переводим координаты в комплексный вид, чтобы было проще записывать</span>
<span class="co1">% берем самую левую точку - это первая точка оболочки z</span>
z<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span> = p<span class="br0">&#40;</span> x == <span class="kw2">min</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span> <span class="br0">&#41;</span>; 
k = <span class="nu0">1</span>; <span class="co1">% счетчик точек</span>
<span class="co1">% алгоритм Джарвиса</span>
<span class="kw1">while</span> z<span class="br0">&#40;</span><span class="kw1">end</span><span class="br0">&#41;</span> ~= z<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span> | k == <span class="nu0">1</span> <span class="co1">% пока не вернемся к начальной точке (или только первый шаг)</span>
&nbsp; &nbsp; <span class="co1">% находим разности всех точек и текущей: p-z(k) </span>
&nbsp; &nbsp; <span class="co1">% вычисляем аргумент этих разностей (angle)</span>
&nbsp; &nbsp; <span class="co1">% функция unwrap убирает разрывы:</span>
&nbsp; &nbsp; f1 = <span class="kw2">unwrap</span><span class="br0">&#40;</span> <span class="kw2">angle</span><span class="br0">&#40;</span> p-z<span class="br0">&#40;</span>k<span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span> ;
&nbsp; &nbsp; <span class="co1">% игнорируем точки, у которых аргумент получился +/-пи, </span>
&nbsp; &nbsp; <span class="co1">% то есть они находятся позади, чтобы не возвращалось:</span>
&nbsp; &nbsp; f1<span class="br0">&#40;</span> <span class="kw2">abs</span><span class="br0">&#40;</span>f1<span class="br0">&#41;</span>-<span class="kw2">pi</span>==<span class="nu0">0</span> <span class="br0">&#41;</span> = <span class="kw2">NaN</span>; 
&nbsp; &nbsp; <span class="co1">% сохраняем в массив z точку с минимальным аргументом:</span>
&nbsp; &nbsp; z<span class="br0">&#40;</span>k+<span class="nu0">1</span><span class="br0">&#41;</span> = p<span class="br0">&#40;</span> f1==<span class="kw2">min</span><span class="br0">&#40;</span>f1<span class="br0">&#41;</span> <span class="br0">&#41;</span>;
&nbsp; &nbsp; p<span class="br0">&#40;</span> p==z<span class="br0">&#40;</span>k+<span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> = <span class="br0">&#91;</span><span class="br0">&#93;</span>; <span class="co1">% убираем из исходного набора эту точку</span>
&nbsp; &nbsp; k = k + <span class="nu0">1</span>; <span class="co1">% увеличиваем счетчик</span>
<span class="kw1">end</span>
<span class="kw2">plot</span><span class="br0">&#40;</span>z,<span class="co2">'d-r'</span><span class="br0">&#41;</span> <span class="co1">% рисуем оболочку</span>
<span class="kw2">hold</span> off
<span class="co1">% периметр - это сумма (sum) отрезков оболочки,</span>
<span class="co1">% длинна каждого равна модулю (abs) разности соседних (diff) точек</span>
P = <span class="kw2">sum</span><span class="br0">&#40;</span> <span class="kw2">abs</span><span class="br0">&#40;</span> <span class="kw2">diff</span><span class="br0">&#40;</span>z<span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span>;
<span class="kw2">title</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="co2">'Периметр P = '</span>,<span class="kw2">num2str</span><span class="br0">&#40;</span>P<span class="br0">&#41;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="co1">% подписываем</span></pre></td></tr></table></div></td></tr></tbody></table></div><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=7167&amp;d=1633502202" rel="Lightbox" id="attachment7167" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=7167&amp;thumb=1&amp;d=1633502202" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 01.png
Просмотров: 554
Размер:	22.5 Кб
ID:	7167" style="margin: 5px" /></a>  <a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=7168&amp;d=1633502202" rel="Lightbox" id="attachment7168" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=7168&amp;thumb=1&amp;d=1633502202" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 02.png
Просмотров: 494
Размер:	57.1 Кб
ID:	7168" style="margin: 5px" /></a></div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/7294.html</guid>
		</item>
		<item>
			<title>MATLAB. Точки пересечения дискретных данных</title>
			<link>https://www.cyberforum.ru/blogs/261218/5657.html</link>
			<pubDate>Mon, 04 Feb 2019 17:16:53 GMT</pubDate>
			<description>Скриптик для MATLAB для нахождения точек пересечения последовательностей данных (одинакового...</description>
			<content:encoded><![CDATA[<div>Скриптик для MATLAB для нахождения точек пересечения последовательностей данных (одинакового размера). <br />
В отличии от функций fzero или  fsolve он возвращает все точки пересечений на промежутке. Тут применена линейная интерполяция, поэтому результат точнее, чем простой поиск ближайшего значения. Также не требуется точное выражение функции, а лишь отдельные точки данных, что очень удобно для обработки экспериментальных данных с шумами.<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="605575109"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="605575109" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
</pre></td><td class="de1"><pre class="de1"><span class="kw2">clear</span>, <span class="kw2">clc</span>
<span class="co1">% некоторые данные: </span>
x = <span class="nu0">0</span>:<span class="nu0">10</span>;
y1 = <span class="kw2">randn</span><span class="br0">&#40;</span><span class="kw2">size</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span><span class="br0">&#41;</span>;
y2 = <span class="kw2">randn</span><span class="br0">&#40;</span><span class="kw2">size</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
<span class="co1">% находим индексы элементов, где разность меняет знак</span>
d = y2-y1;
s = <span class="kw2">abs</span><span class="br0">&#40;</span><span class="kw2">diff</span><span class="br0">&#40;</span><span class="kw2">sign</span><span class="br0">&#40;</span>d<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; 
id = <span class="kw2">find</span><span class="br0">&#40;</span> s&gt;<span class="nu0">0</span> <span class="br0">&#41;</span>;
&nbsp;
<span class="co1">% пустые массивы (заготовки)</span>
t = <span class="kw2">zeros</span><span class="br0">&#40;</span><span class="kw2">size</span><span class="br0">&#40;</span>id<span class="br0">&#41;</span><span class="br0">&#41;</span>;
f = <span class="kw2">zeros</span><span class="br0">&#40;</span><span class="kw2">size</span><span class="br0">&#40;</span>id<span class="br0">&#41;</span><span class="br0">&#41;</span>;
<span class="kw1">for</span> k = <span class="nu0">1</span>:<span class="kw2">length</span><span class="br0">&#40;</span>id<span class="br0">&#41;</span>
&nbsp; <span class="kw2"><span class="re0">i</span></span> = id<span class="br0">&#40;</span>k<span class="br0">&#41;</span>; <span class="co1">% индексы левых точек</span>
&nbsp; <span class="co1">% находим коэф-ты прямой:</span>
&nbsp; a1 = <span class="br0">&#40;</span>y1<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span>+<span class="nu0">1</span><span class="br0">&#41;</span>-y1<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span><span class="br0">&#41;</span>/<span class="br0">&#40;</span>x<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span>+<span class="nu0">1</span><span class="br0">&#41;</span>-x<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp; a2 = <span class="br0">&#40;</span>y2<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span>+<span class="nu0">1</span><span class="br0">&#41;</span>-y2<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span><span class="br0">&#41;</span>/<span class="br0">&#40;</span>x<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span>+<span class="nu0">1</span><span class="br0">&#41;</span>-x<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp; b1 = y1<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span>-a1*x<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span>;
&nbsp; b2 = y2<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span>-a2*x<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span>;
&nbsp; <span class="co1">% имеем два уравнения:</span>
&nbsp; <span class="co1">% f = a1*t + b1;</span>
&nbsp; <span class="co1">% f = a2*t + b2;</span>
&nbsp; <span class="co1">% получаем систему:</span>
&nbsp; <span class="co1">% -a1*t + f = b1;</span>
&nbsp; <span class="co1">% -a2*t + f = b2;</span>
&nbsp; <span class="co1">% матрица коэф-тов:</span>
&nbsp; A = <span class="br0">&#91;</span>-a1, <span class="nu0">1</span>; 
&nbsp; &nbsp; &nbsp; &nbsp;-a2, <span class="nu0">1</span><span class="br0">&#93;</span>;
&nbsp; <span class="co1">% столбец левой части: </span>
&nbsp; B = <span class="br0">&#91;</span>b1; b2<span class="br0">&#93;</span>;
&nbsp; u = A\B; <span class="co1">% решаем систему</span>
&nbsp; <span class="co1">% сохраняем результат:</span>
&nbsp; t<span class="br0">&#40;</span>k<span class="br0">&#41;</span> = u<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;
&nbsp; f<span class="br0">&#40;</span>k<span class="br0">&#41;</span> = u<span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span>;
<span class="kw1">end</span>
&nbsp;
<span class="co1">% plot them all! ^__^</span>
<span class="kw2">plot</span><span class="br0">&#40;</span>x, y1,<span class="co2">'-b'</span>, x,y2,<span class="co2">'-r'</span>, t,f,<span class="co2">'ok'</span>,<span class="co2">'linew'</span>,<span class="nu0">2</span><span class="br0">&#41;</span>
<span class="kw2">grid</span> on</pre></td></tr></table></div></td></tr></tbody></table></div>Результаты разных вариантов данных:<br />
<a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=5184&amp;d=1549300483" rel="Lightbox" id="attachment5184" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=5184&amp;thumb=1&amp;d=1549300483" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 01.jpg
Просмотров: 567
Размер:	47.5 Кб
ID:	5184" style="margin: 5px" /></a> <a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=5185&amp;d=1549300483" rel="Lightbox" id="attachment5185" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=5185&amp;thumb=1&amp;d=1549300483" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 02.jpg
Просмотров: 882
Размер:	47.3 Кб
ID:	5185" style="margin: 5px" /></a> <br />
<br />
<a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=5186&amp;d=1549300483" rel="Lightbox" id="attachment5186" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=5186&amp;thumb=1&amp;d=1549300483" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 03.jpg
Просмотров: 607
Размер:	43.9 Кб
ID:	5186" style="margin: 5px" /></a> <a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=5187&amp;d=1549300483" rel="Lightbox" id="attachment5187" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=5187&amp;thumb=1&amp;d=1549300483" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 04.jpg
Просмотров: 509
Размер:	41.6 Кб
ID:	5187" style="margin: 5px" /></a></div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/5657.html</guid>
		</item>
		<item>
			<title>жиза...</title>
			<link>https://www.cyberforum.ru/blogs/261218/4523.html</link>
			<pubDate>Sat, 31 Dec 2016 15:36:00 GMT</pubDate>
			<description>Немного завидую тем, кто может спокойно созерцать мягкие изгибы символа частной производной. ...</description>
			<content:encoded><![CDATA[<div>Немного завидую тем, кто может спокойно созерцать мягкие изгибы символа частной производной. <br />
Диффуры они как девушки: они все милы и прекрасны, но попадется одна - сведет с ума, лишит сна и аппетита! Знаете как бывает - случайно увидел в ворохе интернет изображений и хлоп! Все время думаешь о ней, ищешь разные способы решения и хитрые приемчики. А результат не сходится! Пытаешься отвлечься, порешать те, что попроще... не помогает! Решаешь простые, но думаешь о той единственной, которая запала в сердце. И если исписаны ручкой несколько листов А4 с выводом разностной схемы - это уже нечто большее, чем просто.<br />
И вроде зачем оно тебе надо? Зачеты и экзамены в далеком прошлом. И основное занятие - проектирование печатных плат, и ты прочно связал свою деятельность с альтиумом и автокадом, но как говорится: седина в бороду - MATLAB в ребро!</div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/4523.html</guid>
		</item>
		<item>
			<title>Моделирование последовательностей в MATLAB</title>
			<link>https://www.cyberforum.ru/blogs/261218/4517.html</link>
			<pubDate>Thu, 22 Dec 2016 09:53:01 GMT</pubDate>
			<description>Привет, ребятки! :) 
 
Часто при моделировании различных сигналов приходится иметь дело с...</description>
			<content:encoded><![CDATA[<div>Привет, ребятки! :)<br />
<br />
Часто при моделировании различных сигналов приходится иметь дело с различными последовательностями. Например кодами Баркера или потоками данных.<br />
Задаются они обычно набором значений, например <b>F = [1, -1, 1, 1, 1, -1];</b> Однако в жизни каждый символ представляет собой прямоугольный импульс, которые нам и нужно промоделировать.<br />
Загвоздка в том, что в таком виде они представляют собой отдельные точки и приходится каждый символ &quot;расширять&quot;, т.е. повторять нужное количество раз. И повезет, если на один символ будет приходится целое число отсчетов!<br />
<br />
У меня появилось желание сделать какой-нибудь финт, чтобы можно было без особых усилий получать значения последовательностей <u>в произвольный момент времени</u>, без привязки к частоте дискретизации! :) Поэтому мое воспаленное сознание выдало такую конструкцию:<br />
<br />
<b>S = F( 1 + fix(t/T)*(t/T&lt;length(F)) ) * (t/T&lt;length(F))</b><br />
<br />
где <b>F</b> - массив символов последовательности,<br />
<b>T</b> - длительность одного символа последовательности<br />
<b>t</b> - произвольный массив времени<br />
<b>S</b> - значение сигнала данных в эти моменты времени<br />
<br />
Пояснение:<br />
Для <b>t &lt; T*length(F)</b>: логические множители <b>(t/T&lt;length(F))</b> равны 1 и выражение можно переписать в виде: <b>S = F( 1 + fix(t/T) )</b>, где <b>fix(...)</b> возвращает целую часть отношения <b>t/T</b>, а 1 прибавляется для того, что в матлабе индексация массивов начинается не с 0, а с 1.<br />
Для <b>t &gt;= T*length(F)</b>, т.е. в моменты времени большие длительности всей последовательности, множитель (t/T&lt;length(F)) равен нулю и вместе с ним значение сигнала S. При этом индекс символа равен: <b>idx = 1 + fix(t/T).*(t/T&lt;length(F)) = 1 + fix(t/T)*0 = 1</b>, при этом не возникает ошибки индексации массива, т.е. в итоге получаем: <b>S = F(1)*0 = 0;</b> <br />
<br />
Пример:<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="96145970"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="96145970" style="height: 190px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
</pre></td><td class="de1"><pre class="de1"><span class="kw2">clear</span>, <span class="kw2">clc</span>
&nbsp;
F = <span class="br0">&#91;</span><span class="nu0">1</span>,-<span class="nu0">1</span>,<span class="nu0">1</span>,-<span class="nu0">1</span>,<span class="nu0">1</span>,<span class="nu0">1</span>,-<span class="nu0">1</span>,-<span class="nu0">1</span><span class="br0">&#93;</span>; <span class="co1">% некоторая последовательность</span>
Ts = <span class="nu0">0.1</span>; <span class="co1">% длительность символа</span>
t = <span class="nu0">0</span>:<span class="nu0">0.001</span>:<span class="nu0">1</span>; <span class="co1">% массив времени</span>
S = F<span class="br0">&#40;</span> <span class="nu0">1</span> + <span class="kw2">fix</span><span class="br0">&#40;</span>t/Ts<span class="br0">&#41;</span>.*<span class="br0">&#40;</span>t/Ts&lt;<span class="kw2">length</span><span class="br0">&#40;</span>F<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>.*<span class="br0">&#40;</span>t/Ts&lt;<span class="kw2">length</span><span class="br0">&#40;</span>F<span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="co1">% вычисляем сигнал</span>
<span class="co1">% рисуем:</span>
<span class="kw2">plot</span><span class="br0">&#40;</span>t, S, <span class="co2">'linew'</span>,<span class="nu0">2</span><span class="br0">&#41;</span>
<span class="kw2">grid</span> on
<span class="kw2">ylim</span><span class="br0">&#40;</span><span class="br0">&#91;</span>-<span class="nu0">1.1</span>, <span class="nu0">1.1</span><span class="br0">&#93;</span><span class="br0">&#41;</span></pre></td></tr></table></div></td></tr></tbody></table></div><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=4074&amp;d=1482398278" rel="Lightbox" id="attachment4074" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=4074&amp;thumb=1&amp;d=1482398278" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 02.png
Просмотров: 690
Размер:	5.1 Кб
ID:	4074" style="margin: 5px" /></a><br />
<br />
<br />
Думаю не нужно отдельно заострять внимание на том, что для ФМ сигнала нужно сигнал данных S умножить на приращение фазы несущего колебания: <b>Spm = sin(w*t + pi*S);</b> , а для ЧМ - на девиацию частоты: <b>Sfm = sin( (w + df*S).*t );</b><br />
Пример:<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="78038413"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="78038413" style="height: 286px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="de1"><pre class="de1"><span class="kw2">clear</span>, <span class="kw2">clc</span>
&nbsp;
F = <span class="br0">&#91;</span><span class="nu0">1</span>,<span class="nu0">0</span>,<span class="nu0">1</span>,<span class="nu0">0</span>,<span class="nu0">1</span>,<span class="nu0">1</span>,<span class="nu0">0</span>,<span class="nu0">0</span><span class="br0">&#93;</span>; <span class="co1">% данные</span>
Ts = <span class="nu0">0.1</span>; <span class="co1">% длительность символа</span>
t = <span class="nu0">0</span>:<span class="nu0">0.001</span>:<span class="nu0">1</span>; <span class="co1">% массив времени</span>
S = F<span class="br0">&#40;</span> <span class="nu0">1</span> + <span class="kw2">fix</span><span class="br0">&#40;</span>t/Ts<span class="br0">&#41;</span>.*<span class="br0">&#40;</span>t/Ts&lt;<span class="kw2">length</span><span class="br0">&#40;</span>F<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>.*<span class="br0">&#40;</span>t/Ts&lt;<span class="kw2">length</span><span class="br0">&#40;</span>F<span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
Spm = <span class="kw2">sin</span><span class="br0">&#40;</span> <span class="nu0">2</span>*<span class="kw2">pi</span>*<span class="nu0">20</span>*t + <span class="kw2">pi</span>*S <span class="br0">&#41;</span>;
Sfm = <span class="kw2">sin</span><span class="br0">&#40;</span> <span class="nu0">2</span>*<span class="kw2">pi</span>*<span class="br0">&#40;</span><span class="nu0">20</span> + <span class="nu0">20</span>*S<span class="br0">&#41;</span>.*t <span class="br0">&#41;</span>;
<span class="co1">% рисуем:</span>
<span class="kw2">plot</span><span class="br0">&#40;</span>t, S, <span class="co2">'b'</span>,<span class="sy0">...</span>
&nbsp; &nbsp; <span class="me1">t</span>, Spm - <span class="nu0">2</span>, <span class="co2">'r'</span>,<span class="sy0">...</span>
&nbsp; &nbsp; <span class="me1">t</span>, Sfm - <span class="nu0">5</span>, <span class="co2">'g'</span>, <span class="co2">'linew'</span>,<span class="nu0">2</span><span class="br0">&#41;</span>
<span class="kw2">grid</span> on
<span class="kw2">ylim</span><span class="br0">&#40;</span><span class="br0">&#91;</span>-<span class="nu0">6.5</span>, <span class="nu0">1.5</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
<span class="kw2">legend</span><span class="br0">&#40;</span><span class="co2">'data'</span>,<span class="co2">'PM'</span>,<span class="co2">'FM'</span><span class="br0">&#41;</span></pre></td></tr></table></div></td></tr></tbody></table></div><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=4075&amp;d=1482400263" rel="Lightbox" id="attachment4075" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=4075&amp;thumb=1&amp;d=1482400263" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 03.png
Просмотров: 1025
Размер:	8.0 Кб
ID:	4075" style="margin: 5px" /></a></div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/4517.html</guid>
		</item>
		<item>
			<title>Нарисовать произвольное количество случайных окружностей</title>
			<link>https://www.cyberforum.ru/blogs/261218/3319.html</link>
			<pubDate>Wed, 04 Mar 2015 08:12:19 GMT</pubDate>
			<description>Вот за что я люблю MATLAB :) 
clear, clc 
n = 10; % количество 
% случайные параметры окружностей...</description>
			<content:encoded><![CDATA[<div>Вот за что я люблю MATLAB :)<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="268028070"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="268028070" style="height: 222px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="de1"><pre class="de1"><span class="kw2">clear</span>, <span class="kw2">clc</span>
n = <span class="nu0">10</span>; <span class="co1">% количество</span>
<span class="co1">% случайные параметры окружностей (строки)</span>
R = <span class="nu0">2</span> + <span class="nu0">4</span>*<span class="kw2">rand</span><span class="br0">&#40;</span><span class="nu0">1</span>,n<span class="br0">&#41;</span>;
x = <span class="nu0">3</span>*<span class="kw2">randn</span><span class="br0">&#40;</span><span class="nu0">1</span>,n<span class="br0">&#41;</span>;
y = <span class="nu0">3</span>*<span class="kw2">randn</span><span class="br0">&#40;</span><span class="nu0">1</span>,n<span class="br0">&#41;</span>;
&nbsp;
a = deg2rad<span class="br0">&#40;</span><span class="nu0">0</span>:<span class="nu0">360</span><span class="br0">&#41;</span>'; <span class="co1">% вектор углов (столбец)</span>
&nbsp;
<span class="kw2">plot</span><span class="br0">&#40;</span> <span class="kw2">exp</span><span class="br0">&#40;</span><span class="re0">1i</span>*a<span class="br0">&#41;</span>*R + <span class="kw2">ones</span><span class="br0">&#40;</span><span class="kw2">size</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span><span class="br0">&#41;</span>*<span class="br0">&#40;</span>x+<span class="re0">1i</span>*y<span class="br0">&#41;</span> &nbsp;<span class="br0">&#41;</span> <span class="co1">% МАГИЯ! ^___^</span>
&nbsp;
<span class="kw2">axis</span> equal <span class="co1">% выравниваем масштабы осей для красоты</span></pre></td></tr></table></div></td></tr></tbody></table></div><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=3068&amp;d=1425456577" rel="Lightbox" id="attachment3068" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=3068&amp;thumb=1&amp;d=1425456577" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 01F.png
Просмотров: 897
Размер:	8.9 Кб
ID:	3068" style="margin: 5px" /></a></div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/3319.html</guid>
		</item>
		<item>
			<title>Пример матрично-логико-логарифмической магии</title>
			<link>https://www.cyberforum.ru/blogs/261218/2345.html</link>
			<pubDate>Tue, 13 May 2014 13:57:23 GMT</pubDate>
			<description>Благодаря матричной ориентации вычислений в MATLAB некоторые алгоритмы можно реализовать всего в...</description>
			<content:encoded><![CDATA[<div>Благодаря матричной ориентации вычислений в MATLAB некоторые алгоритмы можно реализовать всего в несколько строк! :)<br />
Пример изящества MATLAB-a.<br />
<br />
Задание: &quot;Найти сколько раз числа из массива A встречаются в массиве B&quot;<br />
B = [4 5 1 0 4 2 3 4 2 2 4 0 0 4 0 5 2 3 4 3 5 3 1 2 0 3 3 3 1 0 0 0 0 5 3 0 2 2 4 2];<br />
A = [0 1 2 3 4 5];<br />
<br />
В традиционных ЯП эта задача решается при помощи двойного цикла:<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="534301884"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="534301884" style="height: 158px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
</pre></td><td class="de1"><pre class="de1">N = <span class="kw2">zeros</span><span class="br0">&#40;</span><span class="kw2">size</span><span class="br0">&#40;</span>A<span class="br0">&#41;</span><span class="br0">&#41;</span>;
<span class="kw1">for</span> <span class="kw2"><span class="re0">i</span></span> = <span class="nu0">1</span>:<span class="kw2">length</span><span class="br0">&#40;</span>A<span class="br0">&#41;</span> <span class="co1">% пробегаем по всем элементам массива А</span>
&nbsp; &nbsp; <span class="kw1">for</span> <span class="kw2"><span class="re0">j</span></span> = <span class="nu0">1</span>:<span class="kw2">length</span><span class="br0">&#40;</span>B<span class="br0">&#41;</span> <span class="co1">% пробегаем по всем элементам массива В</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> B<span class="br0">&#40;</span><span class="kw2"><span class="re0">j</span></span><span class="br0">&#41;</span>==A<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span> <span class="co1">% если элементы равны</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; N<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span> = N<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span> + <span class="nu0">1</span>; <span class="co1">% увеличиваем счетчик</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">end</span>
&nbsp; &nbsp; <span class="kw1">end</span>
<span class="kw1">end</span></pre></td></tr></table></div></td></tr></tbody></table></div>Однако MATLAB позволяет получить результат в одну(!) строку:<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="216009263"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="216009263" style="height: 46px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
</pre></td><td class="de1"><pre class="de1">N = <span class="kw2">sum</span><span class="br0">&#40;</span> <span class="kw2">abs</span><span class="br0">&#40;</span> <span class="kw2">log</span><span class="br0">&#40;</span><span class="kw2">exp</span><span class="br0">&#40;</span>B<span class="br0">&#41;</span>'*<span class="kw2">exp</span><span class="br0">&#40;</span>-A<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>&lt;=1e-15 <span class="br0">&#41;</span></pre></td></tr></table></div></td></tr></tbody></table></div>которые можно разбить на три действия:<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="161298371"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="161298371" style="height: 78px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
</pre></td><td class="de1"><pre class="de1">R = <span class="kw2">log</span><span class="br0">&#40;</span><span class="kw2">exp</span><span class="br0">&#40;</span>B<span class="br0">&#41;</span>'*<span class="kw2">exp</span><span class="br0">&#40;</span>-A<span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="co1">% формируется матрица разностей R(i,j) = B(j)-A(i)</span>
L = <span class="kw2">abs</span><span class="br0">&#40;</span> R <span class="br0">&#41;</span>&lt;=1e-10 <span class="co1">% логическая матрица, 1 - там где модуль разности меньше порогового значения</span>
N = <span class="kw2">sum</span><span class="br0">&#40;</span> L <span class="br0">&#41;</span> <span class="co1">% суммы столбцов, они равны искомому количеству</span></pre></td></tr></table></div></td></tr></tbody></table></div>Пояснение по первому действию можно <a href="https://www.cyberforum.ru/matlab/thread746101.html#post3919837">посмотреть тут</a> <br />
Во втором из-за конечной точности вычислений разность равных чисел не всегда строго равна нулю, поэтому приходится сравнивать с порогом.<br />
По третьему - это обработка логических векторов, о которых <a href="https://www.cyberforum.ru/blogs/261218/blog1134.html">я уже писал</a> :)<br />
<br />
<br />
Если массив <b>А</b> - уникальные элементы массива <b>В</b>, то можно получить вероятности появлений элементов, а также отсортировать их:<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="611300000"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="611300000" style="height: 206px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="de1"><pre class="de1"><span class="kw2">clear</span>, <span class="kw2">clc</span>
B = randint<span class="br0">&#40;</span><span class="nu0">1</span>,<span class="nu0">20</span>,<span class="br0">&#91;</span><span class="nu0">0</span> <span class="nu0">9</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="co1">% случайный вектор</span>
A = <span class="kw2">unique</span><span class="br0">&#40;</span>B<span class="br0">&#41;</span> <span class="co1">% уникальные элементы</span>
&nbsp;
<span class="co1">% вероятности появления элементов</span>
P = <span class="kw2">sum</span><span class="br0">&#40;</span> <span class="kw2">abs</span><span class="br0">&#40;</span> <span class="kw2">log</span><span class="br0">&#40;</span><span class="kw2">exp</span><span class="br0">&#40;</span>B<span class="br0">&#41;</span>'*<span class="kw2">exp</span><span class="br0">&#40;</span>-A<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>&lt;=1e-15 <span class="br0">&#41;</span> / <span class="kw2">length</span><span class="br0">&#40;</span>B<span class="br0">&#41;</span> &nbsp;
<span class="br0">&#91;</span>p ii<span class="br0">&#93;</span> = <span class="kw2">sort</span><span class="br0">&#40;</span>P,<span class="co2">'descend'</span><span class="br0">&#41;</span>; <span class="co1">% сортируем по убыванию</span>
a = A<span class="br0">&#40;</span>ii<span class="br0">&#41;</span>; <span class="co1">% модифицируем массив А в соответствии с сортировкой</span>
<span class="co1">% отображаем массивы:</span>
a 
p</pre></td></tr></table></div></td></tr></tbody></table></div>Думаю не секрет, что таким же макаром можно обрабатывать текст, т.е. массивы кодов ASCII ;)<br />
<br />
<br />
Также подобное задание: &quot;<b>Найти числа, которые встречаются в массиве ровно 2 раза</b>&quot; можно решить так:<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="254297648"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="254297648" style="height: 126px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
</pre></td><td class="de1"><pre class="de1">B = randint<span class="br0">&#40;</span><span class="nu0">1</span>,<span class="nu0">20</span>,<span class="br0">&#91;</span><span class="nu0">0</span> <span class="nu0">9</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="co1">% случайный вектор</span>
A = <span class="kw2">unique</span><span class="br0">&#40;</span>B<span class="br0">&#41;</span> <span class="co1">% уникальные элементы</span>
&nbsp;
<span class="co1">% индексы элементов, которые встречаются дважды:</span>
idx = <span class="kw2">sum</span><span class="br0">&#40;</span> <span class="kw2">abs</span><span class="br0">&#40;</span> <span class="kw2">log</span><span class="br0">&#40;</span><span class="kw2">exp</span><span class="br0">&#40;</span>B<span class="br0">&#41;</span>'*<span class="kw2">exp</span><span class="br0">&#40;</span>-A<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>&lt;=1e-15 <span class="br0">&#41;</span> == <span class="nu0">2</span>; 
z = A<span class="br0">&#40;</span>idx<span class="br0">&#41;</span> <span class="co1">% элементы, которые встречаются дважды</span></pre></td></tr></table></div></td></tr></tbody></table></div><br />
<b>Однако</b>, как показали испытания, затраты времени на обработку матриц при всей заточке матлаба на них, оказались выше, чем для циклов! :pardon: <br />
(правда может это только на моем тракторе)<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Тестовая программа</div>
				   <div class="spoiler-body">
					   <div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="744797566"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="744797566" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="de1"><pre class="de1"><span class="kw2">clear</span>, <span class="kw2">clc</span>
&nbsp;
n = <span class="kw2">fix</span><span class="br0">&#40;</span><span class="kw2">logspace</span><span class="br0">&#40;</span><span class="nu0">2</span>,<span class="nu0">6</span>,<span class="nu0">10</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp;
<span class="kw1">for</span> k = <span class="nu0">1</span>:<span class="kw2">length</span><span class="br0">&#40;</span>n<span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="co1">% задаем случайные вектора</span>
&nbsp; &nbsp; x = randint<span class="br0">&#40;</span><span class="nu0">1</span>,n<span class="br0">&#40;</span>k<span class="br0">&#41;</span>,<span class="br0">&#91;</span><span class="nu0">0</span> <span class="nu0">9</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;
&nbsp; &nbsp; a = <span class="kw2">unique</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span>;
&nbsp; &nbsp; 
&nbsp; &nbsp; <span class="co1">% матричный метод</span>
&nbsp; &nbsp; <span class="kw2">tic</span>
&nbsp; &nbsp; N1 = <span class="kw2">sum</span><span class="br0">&#40;</span> <span class="kw2">abs</span><span class="br0">&#40;</span> <span class="kw2">log</span><span class="br0">&#40;</span><span class="kw2">exp</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span>'*<span class="kw2">exp</span><span class="br0">&#40;</span>-a<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>&lt;=1e-15 <span class="br0">&#41;</span>;
&nbsp; &nbsp; t1<span class="br0">&#40;</span>k<span class="br0">&#41;</span> = <span class="kw2">toc</span>;
&nbsp; &nbsp; 
&nbsp; &nbsp; <span class="co1">% цикл</span>
&nbsp; &nbsp; <span class="kw2">tic</span>
&nbsp; &nbsp; N2 = <span class="kw2">zeros</span><span class="br0">&#40;</span><span class="kw2">size</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp; &nbsp; <span class="kw1">for</span> <span class="kw2"><span class="re0">i</span></span> = <span class="nu0">1</span>:<span class="kw2">length</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="kw2"><span class="re0">j</span></span> = <span class="nu0">1</span>:<span class="kw2">length</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> x<span class="br0">&#40;</span><span class="kw2"><span class="re0">j</span></span><span class="br0">&#41;</span>==a<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; N2<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span> = N2<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span> + <span class="nu0">1</span>;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">end</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">end</span>
&nbsp; &nbsp; <span class="kw1">end</span>
&nbsp; &nbsp; t2<span class="br0">&#40;</span>k<span class="br0">&#41;</span> = <span class="kw2">toc</span>;
&nbsp; &nbsp; 
&nbsp; &nbsp; <span class="kw1">if</span> <span class="kw2">any</span><span class="br0">&#40;</span>N1~=N2<span class="br0">&#41;</span>, <span class="kw2">disp</span><span class="br0">&#40;</span><span class="co2">'Ошибка!'</span><span class="br0">&#41;</span>, <span class="kw1">end</span> <span class="co1">% на всякий пожарный</span>
<span class="kw1">end</span>
&nbsp;
<span class="kw2">loglog</span><span class="br0">&#40;</span>n,t1,<span class="co2">'r'</span>,n,t2,<span class="co2">'b'</span>,<span class="co2">'linew'</span>,<span class="nu0">2</span><span class="br0">&#41;</span>
<span class="kw2">xlabel</span><span class="br0">&#40;</span><span class="co2">'Длинна массива В'</span><span class="br0">&#41;</span>
<span class="kw2">ylabel</span><span class="br0">&#40;</span><span class="co2">'Время вычислений, с'</span><span class="br0">&#41;</span>
<span class="kw2">grid</span> on
<span class="kw2">legend</span><span class="br0">&#40;</span><span class="co2">'Матричный метод'</span>,<span class="co2">'цикл'</span><span class="br0">&#41;</span></pre></td></tr></table></div></td></tr></tbody></table></div><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=2348&amp;d=1399989249" rel="Lightbox" id="attachment2348" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=2348&amp;thumb=1&amp;d=1399989249" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 01F.png
Просмотров: 915
Размер:	13.6 Кб
ID:	2348" style="margin: 5px" /></a><br />

				   </div>
			   </div></div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/2345.html</guid>
		</item>
		<item>
			<title>Ахтунг! Стих!</title>
			<link>https://www.cyberforum.ru/blogs/261218/1643.html</link>
			<pubDate>Tue, 08 Oct 2013 08:26:10 GMT</pubDate>
			<description><![CDATA[Нашел в своих старых записях :D :-[ 
 
Я буду ”любить” свой кампутер… 
Любить его долго и страстно…...]]></description>
			<content:encoded><![CDATA[<div>Нашел в своих старых записях :D :-[<br />
<br />
<div class="codeblock"><div class="matlab"><div class="head">Matlab M</div><div id="109252837" style="height: 350px" class="codeframe"><pre class="de1">Я буду ”любить” свой кампутер…
Любить его долго и страстно…
Любить с молотком, пассатижами…
&nbsp; &nbsp; &nbsp; Так, чтоб летели осколки и искры!
Любить, пока ничего не останется…
Пока не иссякнут последние силы! 
* * *
Винт положу, забью в него гвоздики
Распилю дискостандером на много частей
Сожгу их в печи,
&nbsp; &nbsp; &nbsp; для того чтобы в воздухе
Кружился их пепел,
&nbsp; &nbsp; &nbsp; словно стаи грачей! 
* * *
Памяти планки смелю в мясорубке,
Пусть фарш не наварист,
&nbsp; &nbsp; &nbsp; но смысл в другом!
Неважно в чем,
&nbsp; &nbsp; &nbsp; хоть в кофемолке,
Только б осколки валялись кругом! 
* * *
Я в PCI воткну <span class="nu0">220</span>,
&nbsp; &nbsp; &nbsp; а в AGP налью кислоты!
БИОС прошью…
&nbsp; &nbsp; &nbsp; раскаленной иголкой,
И топором отобью чип-сетЫ! 
* * *
Завоет тоскливо
&nbsp; &nbsp; &nbsp; кулер блока питанья,
Недолго вееть ему,
&nbsp; &nbsp; &nbsp; на бренный сей свет!
Кусачки обмоткам свершат обрезанье,
Всего лишь мгновенье,-
&nbsp; &nbsp; &nbsp; и все<span class="sy0">...</span> его нет!<span class="sy0">...</span> 
* * *
Останки платы материнской
Мой молоток устанет бить.
Тогда, припомнив ее нрав предерзкий,
&nbsp; &nbsp; &nbsp; и подлых зависаний миг,
В текстолит ее холодный,
Вонзятся,
&nbsp; &nbsp; &nbsp; не унимая свою прыть,
Бензопилы зубцы,
&nbsp; &nbsp; &nbsp; как зверь голодный,
И будут все ломать, крушить!
* * *
Попросит пощады
&nbsp; &nbsp; &nbsp; процессор центральный,
Но нет!
&nbsp; &nbsp; &nbsp; не увидеть ему,
Белого света, лишь лампы паяльной,
Пламень необычайный,
И сгинет
&nbsp; &nbsp; &nbsp; навеки
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;в черном
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;дыму!</pre></div></div></div><br />
<i>В. Маньяковский</i>, декабрь,2008г</div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/1643.html</guid>
		</item>
		<item>
			<title>...</title>
			<link>https://www.cyberforum.ru/blogs/261218/1458.html</link>
			<pubDate>Sat, 29 Jun 2013 08:42:35 GMT</pubDate>
			<description>Человеческую глупость также нужно уважать и относиться к ней со снисхождением :yes:</description>
			<content:encoded><![CDATA[<div>Человеческую глупость также нужно уважать и относиться к ней со снисхождением :yes:</div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/1458.html</guid>
		</item>
		<item>
			<title>Электрон быстрее дырки, почему?</title>
			<link>https://www.cyberforum.ru/blogs/261218/1382.html</link>
			<pubDate>Fri, 24 May 2013 07:45:32 GMT</pubDate>
			<description>(из этой темы: https://www.cyberforum.ru/electrotechnology/thread874416.html ) 
 
Тут нужно...</description>
			<content:encoded><![CDATA[<div><div align="right">(из этой темы: <a href="https://www.cyberforum.ru/electrotechnology/thread874416.html">https://www.cyberforum.ru/elec... 74416.html</a> )</div><br />
Тут нужно рассматривать не просто одиночный атом, а полупроводник определенного типа! ;)<br />
<br />
Рассмотрим полупроводник <b>n</b>-типа. У него избыток <u>свободных</u> электронов, &quot;легких, дерзких,  как пуля резких&quot; :jokingly: их ничто не держит и они снуют по полупроводнику (&quot;э! Напряженность есть? А если найду?&quot;)<br />
В таком проводнике нет дырок и избыточные электроны ничто не держит.<br />
<br />
А в полупроводничке <b>p</b>-типа проводимость дырочная, т.е. преобладают дырки. Что это значит? Значит, что &quot;на 10 девченок по статистике 9 ребят&quot;, (девченки как раз оказались втему :jokingly: ) т.е. дырок больше, чем свободных электронов, т.е. все электроны заняты. Следовательно, для перемещения дырки нужно, вначале оторвать электрончик от атома (но ведь он не хочет с ним расставаться!), а потом только переместить к соседней дырке сообразно полю. И так с каждой дырочкой: отрывать и перемещать к соседней, отрывать и перемещать к соседней...<br />
<br />
Смекаешь? :)</div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/1382.html</guid>
		</item>
		<item>
			<title>Матричная магия: часть 1 - Суммирование в мгновение ока!</title>
			<link>https://www.cyberforum.ru/blogs/261218/1134.html</link>
			<pubDate>Fri, 01 Feb 2013 14:27:51 GMT</pubDate>
			<description>Очень часто возникают задачи посчитать сумму ряда. 
В традиционных языках программирования для...</description>
			<content:encoded><![CDATA[<div>Очень часто возникают задачи посчитать сумму ряда.<br />
В традиционных языках программирования для этого используются циклы, в матлабе же есть замечательная встроенная функция <b>sum</b>, которая одним махом находит сумму элементов массива или столбцов матрицы! :)<br />
Но я расскажу еще об одном способе: матричном заклинании которое считает сумму быстрее первых двух способов! ;)<br />
Вспомним правило матричного умножения: элемент новой матрицы равен <u>сумме</u> произведений <u>строки</u> первой матрицы на <u>столбец</u> второй.<br />
<br />
<u>Теперь, если допустить, что первая матрица - вектор-строка, а второй вектор-столбец, то результат будет числом, равным <b>сумме поэлементных произведений</b>!</u> В этом вся соль! <br />
<br />
<u><b>Главное, чтобы длины векторов совпадали и соблюдалась ориентация!!!</b></u><br />
<br />
Так, для вычисления суммы элементов вектора-строки <b>x</b> достаточно матрично умножить его на вектор-столбец из единичек! А так как матлаб заточен и оптимизирован под матричные операции, такой способ работает очень быстро!<br />
Для сравнения различных алгоритмов суммирования в матлаб я набросал простенькую программку:<br />

			   <div class="spoiler-wrap">
				   <div class="spoiler-head folded clickable">Программа MATLAB</div>
				   <div class="spoiler-body">
					   <div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="254174579"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="254174579" style="height: 350px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td class="de1"><pre class="de1"><span class="kw2">clear</span>; <span class="kw2">clc</span>;
&nbsp;
n = <span class="nu0">60</span>; <span class="co1">% кол-во точек</span>
<span class="co1">% длины масивов</span>
N = <span class="kw2">fix</span><span class="br0">&#40;</span><span class="kw2">logspace</span><span class="br0">&#40;</span><span class="nu0">1</span>,<span class="nu0">7</span>,n<span class="br0">&#41;</span><span class="br0">&#41;</span>;
T = <span class="kw2">zeros</span><span class="br0">&#40;</span>n,<span class="nu0">3</span><span class="br0">&#41;</span>;
<span class="kw1">for</span> k = <span class="nu0">1</span>:<span class="kw2">length</span><span class="br0">&#40;</span>N<span class="br0">&#41;</span>
&nbsp; &nbsp; <span class="co1">% формируем масивы</span>
&nbsp; &nbsp; x = <span class="nu0">1</span>:N<span class="br0">&#40;</span>k<span class="br0">&#41;</span>;
&nbsp; &nbsp; o = <span class="kw2">ones</span><span class="br0">&#40;</span><span class="nu0">1</span>,N<span class="br0">&#40;</span>k<span class="br0">&#41;</span><span class="br0">&#41;</span>;
&nbsp; &nbsp; 
&nbsp; &nbsp; <span class="kw2">tic</span>
&nbsp; &nbsp; s1=<span class="kw2">sum</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span>; <span class="co1">% суммирование встроенной ф-цией</span>
&nbsp; &nbsp; t_sum = <span class="kw2">toc</span>;
&nbsp; &nbsp; 
&nbsp; &nbsp; <span class="kw2">tic</span>
&nbsp; &nbsp; s2=x*o'; <span class="co1">% суммирование матричным умножением</span>
&nbsp; &nbsp; t_matr = <span class="kw2">toc</span>;
&nbsp; &nbsp; 
&nbsp; &nbsp; <span class="kw2">tic</span>
&nbsp; &nbsp; s3=<span class="nu0">0</span>;
&nbsp; &nbsp; <span class="kw1">for</span> <span class="kw2"><span class="re0">i</span></span>=<span class="nu0">1</span>:N<span class="br0">&#40;</span>k<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; s3=s3+x<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span>; <span class="co1">% суммирование в цикле</span>
&nbsp; &nbsp; <span class="kw1">end</span>
&nbsp; &nbsp; t_loop = <span class="kw2">toc</span>;
&nbsp; &nbsp; <span class="co1">% сохраняем длительности</span>
&nbsp; &nbsp; T<span class="br0">&#40;</span>k,:<span class="br0">&#41;</span> = <span class="br0">&#91;</span>t_sum, t_matr, t_loop<span class="br0">&#93;</span>;
<span class="kw1">end</span>
<span class="co1">% рисуем логарифм. график и подписываем</span>
<span class="kw2">loglog</span><span class="br0">&#40;</span>N,T<span class="br0">&#41;</span>
<span class="kw2">ylabel</span><span class="br0">&#40;</span><span class="co2">'Время вычисления, t, с'</span><span class="br0">&#41;</span>
<span class="kw2">xlabel</span><span class="br0">&#40;</span><span class="co2">'Длинна массива, N'</span><span class="br0">&#41;</span>
<span class="kw2">legend</span><span class="br0">&#40;</span><span class="co2">'Ф-ция sum'</span>,<span class="co2">'Матричное умножение'</span>,<span class="co2">'Суммирование в цикле'</span>,<span class="co2">'location'</span>,<span class="co2">'northwest'</span><span class="br0">&#41;</span></pre></td></tr></table></div></td></tr></tbody></table></div>
				   </div>
			   </div><br />
Она генерирует произвольные массивы <b>х</b> с длинами от 10<sup>1</sup> до 10<sup>7</sup>, считает сумму тремя различными способами, засекает время расчета каждого, сохраняет результат и рисует график.<br />
Получаем такую зависимость: <br />
<br />
<a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1694&amp;d=1359726415" rel="Lightbox" id="attachment1694" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1694&amp;thumb=1&amp;d=1359726415" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 0p.png
Просмотров: 1779
Размер:	7.1 Кб
ID:	1694" style="margin: 5px" /></a><br />
<br />
Отсюда можно сделать такие выводы: <br />
- суммирование в цикле сообразно использовать, если длинна массива меньше ~200. Однако, в данном случае, в цикле нет доп. вычислений и условий, которые есть в реальном задании, поэтому от циклов лучше по возможности уходить :pardon:<br />
- матричное умножение считается быстрее встроенной ф-ции, а при длине массива болше ~10<sup>5</sup> разница между ними становится значительной. Поэтому для массивов больших размерностей предпочтительней использовать матричное умножение :)<br />
<br />
Ну и на закуску приведу пример вычисления рядов матричным умножением.<br />
Рассчет экспоненты:<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="872501152"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="872501152" style="height: 110px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
</pre></td><td class="de1"><pre class="de1"><span class="kw2"><span class="re0">i</span></span> = <span class="nu0">0</span>:<span class="nu0">19</span>; <span class="co1">% 20 членов ряда</span>
x = <span class="nu0">2</span>;<span class="co1">% значение аргумента</span>
s = x.^<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span> * <span class="br0">&#40;</span><span class="nu0">1</span>./<span class="kw2">factorial</span><span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span><span class="br0">&#41;</span>' <span class="co1">% сумма произведений</span>
y = <span class="kw2">exp</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span> <span class="co1">% точный результат для сравнения</span>
d = <span class="kw2">abs</span><span class="br0">&#40;</span>s-y<span class="br0">&#41;</span> <span class="co1">% разница</span></pre></td></tr></table></div></td></tr></tbody></table></div>Получаем: <div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="155834384"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="155834384" style="height: 158px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
</pre></td><td class="de1"><pre class="de1">s =
&nbsp; &nbsp; <span class="nu0">7.3891</span>
&nbsp;
y =
&nbsp; &nbsp; <span class="nu0">7.3891</span>
&nbsp;
d =
&nbsp; 4.7606e-013</pre></td></tr></table></div></td></tr></tbody></table></div>Замечу, что конструкция вида <b>a:h:b</b> возвращает <u>вектор-строку</u> чисел от <b>а</b> до b с шагом <b>h</b>, поэтому второй вектор (1./factorial(i)) тоже будет строкой, поэтому мы его транспонируем (...)'<br />
<br />
Вообщем направление я Вам дал, а дальше, все зависит от <s>грибов и маниакальных наклонностей</s> фантазии! :pardon:<br />
<br />
Список тем, где был применен данный метод:<br />
<a href="https://www.cyberforum.ru/post3697347.html">https://www.cyberforum.ru/post3697347.html</a> и <a href="https://www.cyberforum.ru/post3699099.html">https://www.cyberforum.ru/post3699099.html</a><br />
<a href="https://www.cyberforum.ru/post3811787.html">https://www.cyberforum.ru/post3811787.html</a> (см. под кат)<br />
<br />
В следующей части расскажу, как из двух векторов любой длины, при помощи матричной магии :wizard: , создать матрицу и как это можно применить на практике.</div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/1134.html</guid>
		</item>
		<item>
			<title>Матричная магия: вступление</title>
			<link>https://www.cyberforum.ru/blogs/261218/1133.html</link>
			<pubDate>Fri, 01 Feb 2013 13:03:22 GMT</pubDate>
			<description>Одной из особенностей MATLAB-а, отличающего его среди множества иных языков программирования...</description>
			<content:encoded><![CDATA[<div>Одной из особенностей MATLAB-а, отличающего его среди множества иных языков программирования высокого уровня, является поддержка матричных операций! Основным из них является умножение, из которого реализуются деление и степень (есть еще и другие, вроде матричной экспоненты, но не будем зарываться в дебри). <br />
Обозначаются они операторами: <b>*</b>, <b>/</b>, <b>^</b> соответственно.<br />
<br />
Если мы заглянем в математический справочник, то можем заметить, что матричные действия осуществимы не над каждой парой матриц, они должны удовлетворять определенным условиям. Например, возводить в степень можно только квадратную матрицу, определитель матрицы в знаменателе должен быть неравен нулю, смежные размерности матриц при умножении должны равняться и т.д. (подробнее можно посмотреть тут <a rel="nofollow noopener noreferrer" href="http://ru.wikipedia.org/wiki/%D0%A3%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86" target="_blank" title="http://ru.wikipedia.org/wiki/%D0%A3%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86">wiki</a>) Поэтому часто возникают ошибки, если перепутать матричные операции с поэлементными.<br />
<br />
В одной из предыдущих записей<br />
<a href="https://www.cyberforum.ru/blogs/261218/blog968.html">https://www.cyberforum.ru/blog... og968.html</a><br />
я затрагивал этот вопрос, однако там матричные операции рассматривались как негативное явление.<br />
Теперь же я хочу в меру своих скудных познаний, хоть немного приоткрыть дверцу в необычный и интересный мир матричных вычислений! :yes:<br />
<br />
Продолжение следует...</div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/1133.html</guid>
		</item>
		<item>
			<title>Математик на кухне...</title>
			<link>https://www.cyberforum.ru/blogs/261218/1085.html</link>
			<pubDate>Tue, 15 Jan 2013 07:21:45 GMT</pubDate>
			<description>Как-то на новый год жена дала мне задание орезать мясо на два салата, причем в один нужно положить...</description>
			<content:encoded><![CDATA[<div>Как-то на новый год жена дала мне задание орезать мясо на два салата, причем в один нужно положить 1/3 общего кол-ва, ну и соответственно во второй 2/3.<br />
Пока резал, размышлял в себе как быть... Ведь легко поделить на 2: вычесть 6 дБ, сдвинуть в двоичном виде на одни разряд вправо или найти точку в которой интергралы плотности по объему будут равны:<br />
<br />
<img src="https://www.cyberforum.ru/cgi-bin/latex.cgi?%5Cint_%7B-%20%5Cinf%20%7D%5Ex%20%5Crho%20dV%20%3D%20%5Cint_x%5E%7B%2B%20%5Cinf%7D%20%5Crho%20dV" border="0" alt="https://www.cyberforum.ru/cgi-bin/latex.cgi?\int_{- \inf }^x \rho dV = \int_x^{+ \inf} \rho dV" /><br />
<br />
А вот на 3 поделить труднее. Как быть? Если поделить на 2, то ошибка составит:<br />
1/2 - 1/3 = 1/6 целой части, т.е. для получения нужного результата от половинки нужно отделить 1/3, а чтобы отделить 1/3 от половинки нужно опять поделить ее на два и отнять 1/3 от четвертинки!... loading.... Эврика! Другими словами:<br />
<br />
<img src="https://www.cyberforum.ru/cgi-bin/latex.cgi?1%2F3%20%3D%201%2F2%20-%201%2F4%20-%201%2F8...%20%3D%201%2F2%20-%20%5Csum_%7Bn%3D2%7D%5E%7B%2B%5Cinf%7D1%2F2%5En%3B" border="0" alt="https://www.cyberforum.ru/cgi-bin/latex.cgi?1/3 = 1/2 - 1/4 - 1/8... = 1/2 - \sum_{n=2}^{+\inf}1/2^n;" /><br />
<br />
Если делить кусок последовательно пополам, до тех пор, пока размер остаточного члена на станет соразмерным дискрету мяса! :)<br />
<br />
Так я принялся за вычислительный процес, однако на 6й итерации пришла жена, молча посмотрела на мои действия, собрала текущий остаток от деления и округлила результат :pardon:<br />
<br />
Вот так и получается, что у нормальных людей салат с мясом и овощами, а у меня с погрешностью и шестью членами геометрической прогресии... :jokingly:</div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/1085.html</guid>
		</item>
		<item>
			<title>Новогодние салаты.</title>
			<link>https://www.cyberforum.ru/blogs/261218/1022.html</link>
			<pubDate>Mon, 14 Jan 2013 16:57:37 GMT</pubDate>
			<description>Как-то на новый год жена дала мне задание орезать мясо на два салата, причем в один нужно положить...</description>
			<content:encoded><![CDATA[<div>Как-то на новый год жена дала мне задание орезать мясо на два салата, причем в один нужно положить 1/3 общего кол-ва, ну и соответственно во второй 2/3.<br />
Пока резал, размышлял в себе как быть... Ведь легко поделить на 2: вычесть 6 дБ, сдвинуть в двоичном виде на одни разряд вправо или найти точку в которой интергралы плотности по объему будут равны:<br />
<br />
<img src="https://www.cyberforum.ru/cgi-bin/latex.cgi?%5Cint_%7B-%20%5Cinf%20%7D%5Ex%20%5Crho%20dV%20%3D%20%5Cint_x%5E%7B%2B%20%5Cinf%7D%20%5Crho%20dV" border="0" alt="https://www.cyberforum.ru/cgi-bin/latex.cgi?\int_{- \inf }^x \rho dV = \int_x^{+ \inf} \rho dV" /><br />
<br />
А вот на 3 поделить труднее. Как быть? Если поделить на 2, то ошибка составит:<br />
1/2 - 1/3 = 1/6 целой части, т.е. для получения нужного результата от половинки нужно отделить 1/3, а чтобы отделить 1/3 от половинки нужно опять поделить ее на два и отнять 1/3 от четвертинки!... loading.... Эврика! Другими словами:<br />
<br />
<img src="https://www.cyberforum.ru/cgi-bin/latex.cgi?1%2F3%20%3D%201%2F2%20-%201%2F4%20-%201%2F8...%20%3D%201%2F2%20-%20%5Csum_%7Bn%3D2%7D%5E%7B%2B%5Cinf%7D1%2F2%5En%3B" border="0" alt="https://www.cyberforum.ru/cgi-bin/latex.cgi?1/3 = 1/2 - 1/4 - 1/8... = 1/2 - \sum_{n=2}^{+\inf}1/2^n;" /><br />
<br />
Если делить кусок последовательно пополам, до тех пор, пока размер остаточного члена на станет соразмерным дискрету мяса! :)<br />
<br />
Так я принялся за вычислительный процес, однако на 6й итерации пришла жена, молча посмотрела на мои действия, собрала текущий остаток от деления и округлила результат :pardon:<br />
<br />
Вот так и получается, что у нормальных людей салат с мясом и овощами, а у меня с погрешностью и шестью членами геометрической прогресии... :jokingly:</div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/1022.html</guid>
		</item>
		<item>
			<title>Зловещая точка претыкания!</title>
			<link>https://www.cyberforum.ru/blogs/261218/968.html</link>
			<pubDate>Thu, 13 Dec 2012 09:16:28 GMT</pubDate>
			<description>Огромное число ошибок в MATLAB программах связано с отсутствием точки перед умножением,делением,...</description>
			<content:encoded><![CDATA[<div>Огромное число ошибок в MATLAB программах связано с отсутствием точки перед умножением,делением, степенью!<br />
<br />
Поэтому, дружочек, в твоих же интересах ознакомиться с данным текстом до конца! :yes:<br />
<br />
He пyтaй мaтpичнoe и пoэлeмeнтнoe yмнoжeниe/дeлeниe/cтeпeнь! :) Не забывай ставить точки!<br />
<br />
Выражения <font size="6">a.*b,   a./b,   a.^b</font> - этo пoэлeмeнтныe oпepaции! их зачастую и нужно использовать при работе с векторами! <br />
Здесь особых премудростей нет, главное, чтобы совпадали длины и ориентация векторов, в результате получаем вектор такой же длинны и ориентации:<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="154389826"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="154389826" style="height: 334px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="de1"><pre class="de1">&gt;&gt; a = <span class="br0">&#91;</span><span class="nu0">1</span> <span class="nu0">2</span> <span class="nu0">3</span> <span class="nu0">4</span><span class="br0">&#93;</span>;
&gt;&gt; b = <span class="br0">&#91;</span><span class="nu0">3</span> <span class="nu0">5</span> <span class="nu0">4</span> <span class="nu0">1</span><span class="br0">&#93;</span>;
&gt;&gt; a.*b
&nbsp;
<span class="kw2">ans</span> =
&nbsp;
&nbsp; &nbsp; &nbsp;<span class="nu0">3</span> &nbsp; &nbsp;<span class="nu0">10</span> &nbsp; &nbsp;<span class="nu0">12</span> &nbsp; &nbsp; <span class="nu0">4</span>
&nbsp;
&gt;&gt; a./b
&nbsp;
<span class="kw2">ans</span> =
&nbsp;
&nbsp; &nbsp; <span class="nu0">0.3333</span> &nbsp; &nbsp;<span class="nu0">0.4000</span> &nbsp; &nbsp;<span class="nu0">0.7500</span> &nbsp; &nbsp;<span class="nu0">4.0000</span>
&nbsp;
&gt;&gt; a.^b
&nbsp;
<span class="kw2">ans</span> =
&nbsp;
&nbsp; &nbsp; &nbsp;<span class="nu0">1</span> &nbsp; &nbsp;<span class="nu0">32</span> &nbsp; &nbsp;<span class="nu0">81</span> &nbsp; &nbsp; <span class="nu0">4</span></pre></td></tr></table></div></td></tr></tbody></table></div>Нужно помнить, что в результат вычисления ф-ций от массива, например sin(a), так же является массивом, той же длинны и той же ориентации, что и входная величина:<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="56976313"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="56976313" style="height: 254px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="de1"><pre class="de1">&gt;&gt; a = <span class="br0">&#91;</span><span class="nu0">1</span> <span class="nu0">2</span> <span class="nu0">3</span> <span class="nu0">4</span><span class="br0">&#93;</span>;
&gt;&gt; <span class="kw2">sin</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span>
&nbsp;
<span class="kw2">ans</span> =
&nbsp;
&nbsp; &nbsp; <span class="nu0">0.8415</span> &nbsp; &nbsp;<span class="nu0">0.9093</span> &nbsp; &nbsp;<span class="nu0">0.1411</span> &nbsp; -<span class="nu0">0.7568</span>
&gt;&gt; b = <span class="br0">&#91;</span><span class="nu0">3</span>;<span class="nu0">5</span>;<span class="nu0">4</span><span class="br0">&#93;</span>;
&gt;&gt; <span class="kw2">sin</span><span class="br0">&#40;</span>b<span class="br0">&#41;</span>
&nbsp;
<span class="kw2">ans</span> =
&nbsp;
&nbsp; &nbsp; <span class="nu0">0.1411</span>
&nbsp; &nbsp;-<span class="nu0">0.9589</span>
&nbsp; &nbsp;-<span class="nu0">0.7568</span></pre></td></tr></table></div></td></tr></tbody></table></div>А вот <font size="6">a*b,   a/b,   a^b </font>- этo <u>мaтpичныe</u> oпepaции! (<a href="https://www.cyberforum.ru/algebra/thread437087.html">cм. пpaвилa yмнoжeния/дeлeния/cтeпeни матриц</a>)<br />
Эти операции требуют определеных свойств входных параметров, поэтому получаются следующие ошибки:<br />
- при перемножении двух векторов-строк вылетает ошибка &quot;размерности не совпадают&quot;:<br />
<br />
- в степень можно возводить только квадратные матрицы, поэтому при возведении в степень вектора вылетает ошибка &quot;матрица должна быть квадратной&quot;:<br />
<br />
- с делением происходит более гадкий вариант: при делении векора-строки на вектор-строку <u>ошибка не вылетает, но в результате получается <b>не массив, а одно число</b>!!!</u>, что часто приводит к неверным результатам!<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="479523017"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="479523017" style="height: 142px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
</pre></td><td class="de1"><pre class="de1">&gt;&gt; a = <span class="br0">&#91;</span><span class="nu0">1</span> <span class="nu0">2</span> <span class="nu0">3</span><span class="br0">&#93;</span>;
&gt;&gt; b = <span class="br0">&#91;</span><span class="nu0">3</span> <span class="nu0">2</span> <span class="nu0">5</span><span class="br0">&#93;</span>;
&gt;&gt; a/b
&nbsp;
<span class="kw2">ans</span> = 
&nbsp;
&nbsp; <span class="nu0">0.5789</span></pre></td></tr></table></div></td></tr></tbody></table></div>- при перемножении вектора-строки на вектор-столбец получаем <b>число</b>, что также может привести к неверным результатам.<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="551228527"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="551228527" style="height: 142px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
</pre></td><td class="de1"><pre class="de1">&gt;&gt; a = <span class="br0">&#91;</span><span class="nu0">1</span> <span class="nu0">2</span> <span class="nu0">3</span><span class="br0">&#93;</span>;
&gt;&gt; b = <span class="br0">&#91;</span><span class="nu0">2</span>;<span class="nu0">3</span>;<span class="nu0">4</span><span class="br0">&#93;</span>;
&gt;&gt; a*b
&nbsp;
<span class="kw2">ans</span> =
&nbsp;
&nbsp; &nbsp; <span class="nu0">20</span></pre></td></tr></table></div></td></tr></tbody></table></div>Результат равен сумме произведений элементов, иногда удобно использовать, кстати ;)<br />
<br />
- при перемножении вектора-столбца на вектор-строку получаем <b>матрицу</b>, что также может подпортить результат:<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="553790146"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="553790146" style="height: 206px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="de1"><pre class="de1">&gt;&gt; x = <span class="br0">&#91;</span><span class="nu0">1</span>;<span class="nu0">2</span>;<span class="nu0">3</span>;<span class="nu0">4</span>;<span class="nu0">5</span><span class="br0">&#93;</span>;
&gt;&gt; a = <span class="br0">&#91;</span><span class="nu0">1</span> <span class="nu0">2</span> <span class="nu0">3</span><span class="br0">&#93;</span>;
&gt;&gt; x*a
&nbsp;
<span class="kw2">ans</span> =
&nbsp;
&nbsp; &nbsp; &nbsp;<span class="nu0">1</span> &nbsp; &nbsp; <span class="nu0">2</span> &nbsp; &nbsp; <span class="nu0">3</span>
&nbsp; &nbsp; &nbsp;<span class="nu0">2</span> &nbsp; &nbsp; <span class="nu0">4</span> &nbsp; &nbsp; <span class="nu0">6</span>
&nbsp; &nbsp; &nbsp;<span class="nu0">3</span> &nbsp; &nbsp; <span class="nu0">6</span> &nbsp; &nbsp; <span class="nu0">9</span>
&nbsp; &nbsp; &nbsp;<span class="nu0">4</span> &nbsp; &nbsp; <span class="nu0">8</span> &nbsp; &nbsp;<span class="nu0">12</span>
&nbsp; &nbsp; &nbsp;<span class="nu0">5</span> &nbsp; &nbsp;<span class="nu0">10</span> &nbsp; &nbsp;<span class="nu0">15</span></pre></td></tr></table></div></td></tr></tbody></table></div>Здесь каждый столбец равен произведению столбца <b>x</b> на каждый элемент строки <b>a</b>, что тоже иногда очень может пригодиться! ;)<br />
<br />
<u><font size="5">Замечание:</font></u> <br />
При умножении числа на вектор нет разницы при использовании матричных и поэлементных операций! (Так как число - это то же матрица, только размером 1х1, не занл? ;) )<br />
<div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="427163412"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="427163412" style="height: 238px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="de1"><pre class="de1">&gt;&gt; a = <span class="nu0">3</span>;
&gt;&gt; b = <span class="br0">&#91;</span><span class="nu0">3</span>, <span class="nu0">5</span>, <span class="nu0">4</span><span class="br0">&#93;</span>;
&gt;&gt; a*b
&nbsp;
<span class="kw2">ans</span> =
&nbsp;
&nbsp; &nbsp; &nbsp;<span class="nu0">9</span> &nbsp;<span class="nu0">15</span> &nbsp;<span class="nu0">12</span>
&nbsp;
&gt;&gt; a.*b
&nbsp;
<span class="kw2">ans</span> =
&nbsp;
&nbsp; &nbsp; &nbsp;<span class="nu0">9</span> &nbsp;<span class="nu0">15</span> <span class="nu0">12</span></pre></td></tr></table></div></td></tr></tbody></table></div>Поэтому при действиях с константами и элементами матриц(массивов) точки можно не ставить: <div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="477057700"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="477057700" style="height: 174px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
3
4
5
6
7
8
9
</pre></td><td class="de1"><pre class="de1">&gt;&gt; <span class="kw2"><span class="re0">i</span></span> = <span class="nu0">3</span>; <span class="co1">% индекс</span>
&gt;&gt; n = <span class="nu0">0.5</span>; <span class="co1">% переменная-число</span>
&gt;&gt; M = <span class="kw2">magic</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="br0">&#41;</span>; <span class="co1">% матрица 5х5</span>
&gt;&gt; v = <span class="nu0">1</span>:<span class="nu0">10</span>; <span class="co1">% вектор</span>
&gt;&gt; <span class="br0">&#40;</span><span class="nu0">2.54</span>/M<span class="br0">&#40;</span><span class="nu0">1</span>,<span class="kw2"><span class="re0">i</span></span><span class="br0">&#41;</span><span class="br0">&#41;</span>*v<span class="br0">&#40;</span><span class="kw2"><span class="re0">i</span></span>+<span class="nu0">2</span><span class="br0">&#41;</span>^n <span class="co1">% так можно</span>
&nbsp;
<span class="kw2">ans</span> =
&nbsp;
&nbsp; &nbsp; <span class="nu0">5.6796</span></pre></td></tr></table></div></td></tr></tbody></table></div></div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/968.html</guid>
		</item>
		<item>
			<title>Маня</title>
			<link>https://www.cyberforum.ru/blogs/261218/956.html</link>
			<pubDate>Tue, 11 Dec 2012 14:17:58 GMT</pubDate>
			<description>_По мотивам игры *S.T.A.L.K.E.R.-Зов Припяти* 
_ 
 
Вечер. Затон. Сталкеры возвращаются на...</description>
			<content:encoded><![CDATA[<div><i><u><div align="right">По мотивам игры <b>S.T.A.L.K.E.R.-Зов Припяти</b></div></u></i><br />
<br />
Вечер. Затон. Сталкеры возвращаются на «Скадовск». <br />
<br />
Со станции Янов Штурман привел двух свободовцев, у них свои дела, но каждый сталкер рад новым лицам: как же тут не обсудить новости, не поделиться небылицами и слухами. Чем же еще заняться после изматываюшего дня? Кому-то удача сегодня улыбнулась, кто-то едва успел унести ноги, оставшись нисчем, но если тебе удалось вернуться, значит не все так плохо! :)<br />
 <br />
В углу, на матрасе, сидел сталкер с обветренным лицом и сильной проседью в густой бороде-метелке. Он неособо интересовался новостями и не принимал участия в спорах, просто сидел, укрыв низ туловища пледом, слушал гитару и тихо радовался, что сегодня на базу вернулись все ребята. <br />
<br />
– У этих военных вместо мозгов пластилин, блин! - начал возмущаться один из свободовцев - Чуть что – сразу стреляют! Хотел другану аптечку дать, так один &quot;мутант в погонах&quot; начал шмалить без разбору: меня ранил, а друган так и загнулся...<br />
<br />
– Э, брат, не скажи... – неожиданно включился в беседу сидящий старик – Я знавал нормальных вояк. Борода, помнишь мою Маньку?<br />
<br />
– Хех, как же не помнить! ;) Хорошая баба... была...<br />
<br />
– Баба? Откуда в Зоне женщины? – удивился свободовец.<br />
<br />
– Ща расскажу... – черные, утопающие в морщинах добрые глаза старика заблестели. – Зовут меня Дед-Псевдогигант, потому как потерял обе ноги и теперь передвигаюсь на руках, как мутант :) А дело было так...<br />
<br />
Несколько времени назад на северный кордон, что недалеко от затона, перевели служить прапорщика Марию Николавну. Ну она там занималась делами складскими. Сердобольная баба, видела, как нашему брату туго порой быват, вот она и стала приносить то продукты, то боеприпасы, то из вещей что-то, медикаменты... Естесственно и мы ей платили благодарностю за заботу – добывали артефакты, сопровождали в пути. Она была самым желанным гостем на Скадовске. Но баба конечно была отменная! Не то что нынешние фифы на гражданке ;) Здоровая, крепкая, есть за что ухватить, но с характером – палец в рот не клади, сама кого хочешь за пояс заткнет. Но она доброй была, ко всем, правда вульгарности не позволяла. Женихов было хоть отбавляй, ясно дело, но она ко всем одинаково относилаь, держала на расстоянии, и за это ее все уважали. <br />
<br />
Мне она тоже приглянулась, да и она со времением начала проявлять ко мне симпатию. Я тогда был шустрый малый. – сталкер помолчал немного, на его высохших щеках появился румянец. <br />
<br />
– Понимаете, ребятушки, это Зона! Тут чувства особенно обострены, достаточно полвзгляда - и влюбился! :-[ Может поэтому сталкеры против женщин в зоне... возможно. Ведь сердечная мука разъедает посильней &quot;газировки&quot;... Так, на чем я закончил? Ах, да :yes: Стали, вообщем, мы встречаться, как бы... Ведь какие тут могут быть отношения, когда не знаешь доживешь ли до обеда... Эх, Манька... Там, за водоочистной станцией, на юго-востоке затона есть пустырек – аномалий там мало, артефактов тоже, сталкеры туда практически не ходят, только мелкие твари там пасуться, там мы с ней встречались по вечерам, сидели, смотрели на звездное небо и на мерцающие огоньки аномалий вдалеке... Эх... А вот было, захотел однажды &quot;покозырять&quot; перед ней, говорю мол, хочешь завалю кабана с одного выстрела? Поднял винтовку, начал целиться, а она рукой опустила оружие, говорит «не надо», и очень замечательную мысль сказала: <br />
«<b>Убивать легко, много ума не надо, а ты попробуй роди, вырости!...</b>» <br />
Мне так совестно стало, чесс слово... И ведь животные чувствуют это! А то наши молодчики сначала ради забавы устраивают сафари, а потом удивляются почему на них каждая сабака бросается! <br />
<br />
Но не долго продлилось наше счастье... Однажды мы вместе шли с северного кордона на Скадовск, а в это время начался выброс, укрылись мы на Земснаряде, переждали. У меня возникла мысль посмотреть артефакты, авось появились свеженькие, будь они неладны! Достал детектор, смотрю – есть красавец! Да еще и редкий такой, нельзя было упустить такой экземпляр, тем более девушка смотрит ;) Вообщем, сказал, чтоб она прикрывала тыл от зверья, а я полез за артефактом... Детектор аномалий пищит как сумасшедший! Бросаю гайку прямо к артефакту, она спокойно пролетает – путь чист! Но, как оказалось позже, я жестоко ошибся... Образовались две аномалии – &quot;карусели&quot;, которые закручивают и разрывают в клочья все, что в них попадает – причем две рядом, но аккурат так что гайка пролетела как раз между ними и не была захвачена. А когда начал подходить ближе, попал в одну, она начала схлопываться, я инстинктивно рванулся в другю сторону и попал в центр второй &quot;карусели&quot;! Меня оторвало от земли и начало крутить – тут то мне и писец настал!... если бы не моя Маня... – Из глаз сталкера потекла искристая капелька и скрылась в морщинах лица, дрожащей рукой он взял сигарету, затянулся.<br />
<br />
– Дед, мож сто грамм?<br />
<br />
– Та не, от этой гадости только хуже... - Немного помолчав он продолжил свой рассказ – Когда меня начало раскручивать в воздухе и сделать я уже ничего не мог, Маня подбежала ко мне и вытолкнула меня из карусели, а сама... Вот... Мне оторвало обе ноги... а Маню... – старик опять замолк, по щекам его блестели две мокрые дорожки. <br />
<br />
В баре воцарилась тишина, даже неунывающий Борода, который тысячу раз слышал эту историю и был практически ее очевидцем, с грустью вспоминал те события.<br />
<br />
– Кровавый фонтан и мой крик услышали друзья-сталкеры, что были тут неподалеку, они поспешили на помошь. Эх, ребятки, знали бы вы, как я рвал руками землю, чтоб заползти обратно в аномалию! Но потерял сознание от кровотечения... Сталкеры засунули мне за пазуху пару заживляющих артефактов, благодаря чему смогли дотащить сюда, на Скадовск, где меня и подлатали... <br />
<br />
– А Исполнитель желаний? Может он поможет? <br />
<br />
– Да куда мне безногому? Тем более, я сомневаюсь что он на самом деле есть... Да и что, разве он вернет мне мою Маню?... Первое время мне хотелось умереть. Сколько раз я просил ящик гранат и чтоб меня закинули в логово снорков или кровососов... Но если Маня отдала свою жизнь, чтобы я жил, значит я не могу просто так взять и сдохнуть, просто не имею права, иначе ее жертва станет напрасной, раз Зона позволила мне жить дальше, значит это неспроста... Я вот думаю иногда, а что если бы я тогда погиб, а она осталась? Ей наверное было бы тяжелей пережить такое, жить с этой болью... так что может и не все так хреново, кто знает. :pardon: <br />
Вообщем с тех пор я тут и оселился безвылазно. Так, помогаю по хозяйству, то Кардану технику чинить, то Бороде картошки начищу, то айболиту нашему подсоблю... Видите, ребятушки, главное - помогать друг другу! Как мой батя, моряк, говорил: &quot;Сам погибай, а товарища выручай!&quot;, как моя Маня. Это там, снаружи, люди друг другу глотки грызут, срут один одному на голову, лишь бы себе только хорошо сделать! А тут, в Зоне, свои порядки! Такие стервецы здесь долго не протягивают. Парадокс получается: люди в Зоне с монстрами более человечны, чем те, что живут среди людей! Берегите друг друга - вот основа выживания в Зоне. Такие вот дела ребятки. <br />
<br />
Ладно, чего о грустном-то? Сегодня мы выжили – и это хоршо, что будет завтра – это не важно. Уже поздно, пора на боковую, отдохните с дороги. Пошли за мной.<br />
<br />
Безногий сталкер убрал плед, &quot;потопал&quot; на руках наверх, расстелил прибывшим сталкерам матрасы.<br />
<br />
– Отдыхайте родненькие. <b>Будем жить, пехота! Всем чертям на зло! Будем жить!</b> :yes:</div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/956.html</guid>
		</item>
		<item>
			<title>Логические векторы в MATLAB</title>
			<link>https://www.cyberforum.ru/blogs/261218/931.html</link>
			<pubDate>Wed, 05 Dec 2012 09:28:14 GMT</pubDate>
			<description>В MATLAB, как и в C/C++ логические переменные легко превращаются в числовые, что открывает широкое...</description>
			<content:encoded><![CDATA[<div>В MATLAB, как и в C/C++ логические переменные легко превращаются в числовые, что открывает широкое поле деятельности. Но если C/C++ обрабатывает массивы поэлементно, то MATLAB счелкает их как орешки! ;)<br />
<br />
Пусть задан числовой вектор:<br />
<br />
<font face="Courier New">x = [0, 1.2, 2.4, 3.3, 1.05, 7.4];</font><br />
<br />
Тогда результатом сравнения <br />
<br />
<font face="Courier New">logic_x = (x&lt;3)</font><br />
<br />
будет вектор такой же длинны:<br />
<br />
<font face="Courier New">logic_x = [1 1 1 0 1 0].</font><br />
<br />
Что это нам дает?<br />
Например подсчет кол-ва элементов, удовлетворяющих условию:<br />
<br />
<font face="Courier New">n = sum( (x&lt;3) ) = sum([1 1 1 0 1 0]) = 4.</font><br />
<br />
Или нужно этим элементам присвоить некое случайное значенение:<br />
<br />
<font face="Courier New">x( x&gt;3 ) = rand(1, sum(x&gt;3));</font><br />
<br />
А если задан массив y = f(x), то также можно записать:<br />
<br />
<font face="Courier New">y( x&gt;3 ) = 0;</font><br />
<br />
Подобным образом дело обстоит, если <b>x</b> - многомерный массив(матрица).<br />
<br />
<u>А используя лог. операции <b>&amp;(И)</b>, <b>|(ИЛИ)</b>, <b>~(НЕ)</b> можно составлять довольно сложные структуры!</u><br />
<br />
<u>Пример:</u> дано натуральное число <b>a</b>, рассчитать сумму его делителей, за исключением самого числа.<br />
Создаем вектор чисел от <b>1</b> до <b>a-1</b>:<br />
<br />
<font face="Courier New">k = 1:a-1;</font><br />
<br />
Рассчитываем остатки от деления:<br />
<br />
<font face="Courier New">ost = mod(a, k);</font><br />
<br />
Рассчитываем логический вектор, где отстаток от деления равен нулю:<br />
<br />
<font face="Courier New">isDel = ost==0;</font><br />
<br />
Теперь если поэлементно умножить полученный вектор на вектор чисел <b>k</b>, <br />
<br />
<font face="Courier New">Del = isDel.*k;</font><br />
<br />
то в результате неделители числа <b>a</b> станут нулями.<br />
Тогда делители легко вычленить:<br />
<br />
<font face="Courier New">Del( Del==0 ) = []; </font><br />
<br />
Теперь и сумму найти не составляет труда:<br />
<br />
<font face="Courier New">s = sum(Del);</font><br />
<br />
Однако этот алгоритм можно реализовать еще проще (ведь нулевые элементы сумме не помешают) если применить свойства матричного умножения: <i>элемент равен сумме произведений элементов строки первого на столбец второго вектора.</i> Но для этого нужно, чтобы первый вектор был строкой, а второй - столбцом.<br />
Конструкция типа <b>k = 1:a-1</b> возвращает вектор-строку, поэтому логический вектор <b>isDel</b> также вектор-строка, поэтому мы его должны транспонировать, тогда получаем:<br />
<br />
<font face="Courier New">s = k*isDel'</font> <br />
<br />
или одной строкой: :wizard:<br />
<br />
<font face="Courier New">s = (1:a-1)*(mod(a,1:a-1)==0)'</font><br />
<br />
Красота! :) и мы нигде не использовали циклы и условные операторы! ;)<br />
<br />
Еще одним полезным применением логических векторов является: <br />
<u>созднае <b>строчных </b>выражений для <b>кусочных </b>фунций!</u> ;)<br />
<br />
<u>Пример:</u> пусть задана кусочная ф-ция:<br />
<br />
<font face="Courier New">y = 0, x&lt;=-pi<br />
y = cos(x), -pi&lt;x&lt;0<br />
y = 1, x=0;<br />
y = sin(exp(-x)), x&gt;0</font><br />
<br />
Нужно построить график в диапазоне [-10, 10].<br />
<br />
Первым делом задаем вектор значений <b>x</b>, пусть их будет 200, в заданном дианазоне:<br />
<br />
<font face="Courier New">x = linspace(-10, 10, 200);</font><br />
<br />
Теперь можно было бы соорудить конструкцию <b>if-else</b>, но мы пойдем другим путем! ;)<br />
Трах :wizard: тибидох :wizard: тибидох!<br />
<br />
<font face="Courier New">y = 0*(x&lt;=-pi) + cos(x).*( (x&gt;-pi)&amp;(x&lt;0) ) + 1*(x==0) + sin(exp(-x)).*(x&gt;0);</font><br />
<br />
Если выражения для <b>y<sub>i</sub></b> или условия <b>x</b> довольно громоздкие, то их можно вычислять постепенно:<br />
<br />
<font face="Courier New">inD1 = (x&lt;=-pi);<br />
y1 = 0;<br />
inD2 = (x&gt;-pi)&amp;(x&lt;0);<br />
y2 = cos(x);<br />
inD3 = (x==0);<br />
y3 = 1;<br />
inD4 = ~(inD1 | inD2 | inD3); % если ниодно условие не выполняется<br />
y4 = sin(exp(-x));<br />
<br />
Тогда результирующее значение ф-ции<br />
<br />
y = y1.*inD1 + y2.*inD2 + y3.*inD3 + y4.*inD4;</font><br />
<br />
(<u>Замечание:</u> Здесь вероятно, можно применить матричные операции, но я пока не ставил перед собой такой задачи.)<br />
<br />
Тогда уже не составляет труда построить график: <br />
<font face="Courier New">plot(x,y)</font><br />
<br />
<div align="center"><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1541&amp;d=1354698058" rel="Lightbox" id="attachment1541" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1541&amp;thumb=1&amp;d=1354698058" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: 01.png
Просмотров: 1176
Размер:	3.4 Кб
ID:	1541" style="margin: 5px" /></a></div><br />
При помощи логических векторов очень удобно моделировать такие хитрые ф-ции как <b>ф-ция Дирака</b> и <b>ф-ция Хевисайда</b>! :)<br />
Возможно Вы возразите, мол зачем изобретать велосипед, если есть встроенные ф-ции <b>dirac(t)</b> и <b>heaviside(t)</b>?<br />
Однако встроенные ф-ции ведут себя немного не так, как хотелось бы: <br />
<br />
в особой точке t=0: <font face="Courier New"> dirac(t)=Inf,   heaviside(t)=NaN.</font><br />
<br />
Если их использовать при построении графиков, то <b>plot </b>просто проигнорирует такого рода значения! :pardon:<br />
<br />
А чтобы получить нормальную взвешенную дельта-функцию в импульсной характеристике, например, нужно использовать выражение типа (x==0):<br />
<font face="Courier New">h(t) = h(0).*(t==0) + h<sub>t&gt;0</sub>(t);</font><br />
Подобным образом моделируется ф-ция Хевисайда, при помощи выражения (x&gt;=0) :<br />
<font face="Courier New">g(t) = g(t).*(t&gt;=0)</font><br />
<br />
Вот как-бы и всё, направление мысли я указал, а дальше все ограничивается только фантазией и законами природы :pardon:<br />
Спасибо за внимание! :yes:</div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/931.html</guid>
		</item>
		<item>
			<title>Наонный ксиллициктор</title>
			<link>https://www.cyberforum.ru/blogs/261218/928.html</link>
			<pubDate>Mon, 03 Dec 2012 16:41:59 GMT</pubDate>
			<description>_Слабонервным и с бадуна НЕ читать!_ ;)  
 
Наонный ксиллициктор служит для ксиллицидирования...</description>
			<content:encoded><![CDATA[<div><u>Слабонервным и с бадуна НЕ читать!</u> ;) <br />
<br />
Наонный ксиллициктор служит для ксиллицидирования наонного фило в квант-кристоны с целью аккумуляции и(или) обмена пространственной, а также временной протоматерии.<br />
<br />
Принцип его действия основан на эффекте Брюгеншлицманлейдена - локальном листровани метрохронов в симметричном эргистре за счет флуктуаций интергравионного кси-фило и конденации в слабоскомпенсированном поине.<br />
<br />
Устройство состиот из инфлюзора, симметричного эргистра с генератором хаосвихревого интегравионного кси-фило и формистра-ксиллициктора квант-кристонов.<br />
 <br />
Инфлюзор состоит трех сдвоеных суперсфероидов которые находятся в мощном ционе создаваемом симметричными каобрионами. В первом происходит первичное хроносцепление, во втором - расщепление пуллхрональных пучков и выделение хронфильного фило. В третьем происходит взаимодействие хронфильного фило и метронов в результате чего образуется устойчивый клопус метрохронов.<br />
Клопус метрохронов в эргистре под действием возбужденого гравионного кси-фило листрируется, переходя в фазу наонного фило.<br />
В формистре собственно и происходит конденация наонного фило в квант-кристоны на триполярном метатроде возбуждающим поин.<br />
Полученные таким образом квант-кристоны обладают высокой степенью устойчивости за счет аутосцепления с поином, что дает возможность перемещать его в произвольное склонение относительно оси циркуляции поин-вортекса.</div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/928.html</guid>
		</item>
		<item>
			<title>Малый FAQ по MATLAB</title>
			<link>https://www.cyberforum.ru/blogs/261218/849.html</link>
			<pubDate>Wed, 31 Oct 2012 08:18:09 GMT</pubDate>
			<description>Дружочек, прежде чем создавать новую тему прочти хотя бы первые три пункта: 
 
- Около 50% вопросов...</description>
			<content:encoded><![CDATA[<div><font size="+1">Дружочек, прежде чем создавать новую тему прочти хотя бы первые три пункта:</font><br />
<br />
- Около 50% вопросов можно решить, если воспользоваться поиском по форуму. Не бойся – это не страшно! :yes:<br />
<br />
- Еще 30% вoпpocoв мoжнo peшить, ecли нe пoлeнитьcя глянyть <b>help</b> MATLAB-а: тaм мoжнo нaйти нe тoлькo нyжнyю фyнкцию, ee дeтaльный cинтaкcиc, нo и пpимep ee иcпoльзoвaния, a тaк жe ccылки нa cмeжныe фyнкции.<br />
<br />
- Но если это тебе не помогло и ты всё-же решился создавать тему, то:<br />
<span class="highlight">самое главное - кaк мoжнo пoнятнeй зaдaть вoпpoc!</span><br />
Ha вoпpocы вpoдe &quot;<b>пocчитaйтe мaтpицy, пaзяюcтя ^___^&quot;</b>&quot;,  &quot;<b>Aaaa!!! Oнo нe paбoтaeт!</b>&quot; или &quot;<b>[pиcyнoк c нeвeдoмым гpaфикoм] a дoлжнo быть нe тaк и вooбщe мнe лeнь!</b>&quot;, дaжe пpи oгpoмнeйшeм и нeпpeoдoлимoм жeлaнии пoмoчь и нeвepoятныx нaвыкax экcтpaceнcopики, кpaйнe cлoжнo дaть тoлкoвый oтвeт. <br />
<div class="smallfont offtopic" onmouseover="this.style.color='#000000';" onmouseout="this.style.color='#888888';">
				<p><b>Не по теме:</b></p>
				<p>P.S.: На глупые вопросы отвечаю только девочкам :-[ </p>
				</div><br />
<br />
- Ecли вcтaвляeтe кoд, тo нe бoйтecь иcпoльзoвaть BB-тeги &#91;MATLAB&#93;&#91;/MATLAB&#93; (чecть и xвaлa вepxoвным aдминaм зa тaкyю зaмeчaтeльнeйшyю пoдcвeткy cинтaкcиca!). Этo пpeдoтвpaтит пpeвpaщeниe cкoбoк, двoeтoчий и пpoчиx cимвoлoв в cмaйлы. A в caмoм кoдe нe cкyпитecь нa пpoбeлы, oтcтyпы и комментарии - этo вo cтo кpaт oблeгчит читaeмocть и на 20 децибел yмeньшит вpeмя пoнимaния aлгopитмa, нaxoждeния oшибки и peшeния задачи.<br />
<br />
- Ecли в вoпpoce peчь идeт o чтeнии дaнныx из фaйлa и иx oбpaбoткe, ecли этo нe cвepxceкpeтныe ключи шифpoв пeнтaгoнa, тo вылoжитe и zip-apxив c фaйлoм дaнныx. <br />
Это же относится и к моделям <b>Simulink</b> и к <b>GUI</b>-формам.<br />
Но не нужно прикреплять docx со снимком экрана! Лучше просто вставить картинку, а текст из документа копировать/вставить в сообщение.<br />
<br />
- Пpи зaпиcи ycлoвий нe cтecняйтecь иcпoльзoвaть peдaктop фopмyл (oн нaxoдитcя чyть нижe oкнa peдaктopa cooбщeний в cвepнyтoм видe, см. рис.)<br />
<div align="center"><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1437&amp;d=1351669470" rel="Lightbox" id="attachment1437" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1437&amp;thumb=1&amp;d=1351669470" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: EqRed.png
Просмотров: 989
Размер:	41.4 Кб
ID:	1437" style="margin: 5px" /></a></div>Kpoмe тoгo, чтo фopмyлы cтaнyт бoлee читaeмыми и пoнятными, Bы пoлyчитe бecцeнныe нaвыки paбoты c LaTeX, кoтopый тaкжe мoжнo иcпoльзoвaть в MATLAB и вывoдить в oкнo гpaфикa кpacивыe мaтeмaтичecкиe фopмyлы.<br />
<br />
- <span class="highlight">He пyтaйтe мaтpичнoe и пoэлeмeнтнoe yмнoжeниe/дeлeниe/cтeпeнь!</span><br />
<font size="+1">a*b,  a/b,  a^b</font>  -  этo мaтpичныe oпepaции!  (<a href="https://www.cyberforum.ru/algebra/thread437087.html">cм. пpaвилa yмнoжeния/дeлeния/cтeпeни</a>)<br />
<font size="+1">a.*b,  a./b,  a.^b</font>  - этo пoэлeмeнтныe oпepaции!<br />
<br />
Примерно 70% неверных результатов и ошибок вызвано именно отсутствием точки!<br />
Однако, не стоит также забрасывать на полку матричные действия, иногда они могут сослужить хорошую службу.<br />
<br />
- Имя файл-функции должно совпадать с именем функции и находиться он должен в одном каталоге с программой, использующей ее! <u>Запускать функцию не нужно!</u> Их нужно просто сохранить и вызывать из скрипт-файла (основной программы).<br />
<br />
- Если Вам что-то непонятно в ответе, лучше лишний раз переспросить, чем потом будут спрашивать у Вас ;)<br />
<br />
- Cocтaвляя пpoгpaммy вычиcлeний Вы дoлжны xoтябы пpиблизитeльнo пoнимaть, кaкoв дoлжeн быть peзyльтaт: дeйcтвитeльнoe или кoмплeкcтнoe чиcлo, мaccив, мaтpицa. A тaкжe нeбeздyмнo cocтaвлять вxoдныe дaнныe, вeдь y кaждoй фyнкции ecть cвoя oблacть oпpeдeлeния, чтoбы нe вышлo чтo-тo вpoдe:<br />
 <br />
<img src="https://www.cyberforum.ru/cgi-bin/latex.cgi?%5Cfrac%7Bsqrt%7B-3%7D%7D%7Bsind%20%5Cleft%28%20180%5E%7B%5Ccirc%7D%5Cright%20%29%7D%20%2B%20log%20%5Cleft%28%20cos%28%5Cfrac%7B%5Cpi%7D%7B2%7D%29%20%5Cright%29" border="0" alt="https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{sqrt{-3}}{sind \left( 180^{\circ}\right )} + log \left( cos(\frac{\pi}{2}) \right)" />, ecли вы пoнимaeтe o чeм я <img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1438&amp;d=1351669470" border="0" alt="Название: EVPO4.png
Просмотров: 3408

Размер: 10.6 Кб" style="margin: 5px" />  <br />
И cкopee вceгo MATLAB нaйдeт peзyльтaт, тoлькo oн мoжeт oкaзaтьcя мягкo гoвopя нeoжидaнным! ;)<br />
<br />
- <span class="highlight">Ecли пpoгpaммa пoвиcлa или ee срочно нyжнo остановить</span>, в командной строке (Command Window) нaжми <b>Ctrl+Break</b> (ктo нe знaeт - <b>Break</b> - этa кнoпoчкa нaxoдитcя пpямo нaд <b>PageUp</b>, справа от <b>Scroll Lock</b> см. рис.)<br />
<div align="center"><a href="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1439&amp;d=1351670443" rel="Lightbox" id="attachment1439" ><img src="https://www.cyberforum.ru/blog_attachment.php?attachmentid=1439&amp;thumb=1&amp;d=1351670443" class="thumbnail" border="0" alt="Нажмите на изображение для увеличения
Название: klav.jpg
Просмотров: 2540
Размер:	36.3 Кб
ID:	1439" style="margin: 5px" /></a></div><br />
- Не забывайте, что индeкcы мaccивoв и мaтpиц нaчинaютcя c <b>1</b>, a нe c <b>0</b>, a <b>i</b> и <b>j</b> - этo пo yмoлчaнию мнимaя eдиницa, тaкaя жe кoнcтaнтa кaк и pi, поэтому использовать их как счетчики цикла для вычислений комплексных чисел – не самая лучшая идея.<br />
<br />
- Ecли в кoнцe cтpoки нe пocтaвить тoчкy c зaпятoй &quot;;&quot; тo peзyльтaт бyдeт вывoдитьcя в коммандной строке (Command Window). Этo жe oтнocитcя и к фaйл-фyнкциям! Бyдьтe внимaтeльны, инaчe нeжeлaтeльный вывoд мaтpицы 5000x5000 мoжeт cильнo cнизить cкopocть paбoты пpoгpaммы и пoдпopтить нepвы!<br />
<br />
- Жeлaтeльнo, чтoбы пpoгpaммa нaчинaлacь кoмaндaми oчиcтки пaмяти и кoмaнднoй cтpoки(Command Window): <div class="codeblock"><table class="matlab"><thead><tr><td colspan="2" id="592276529"  class="head">Matlab M</td></tr></thead><tbody><tr class="li1"><td><div id="592276529" style="height: 62px" class="codeframe"><table><tr class="li1"><td class="ln" style="padding: 0px 10px 0px 5px;"><pre class="de1">1
2
</pre></td><td class="de1"><pre class="de1"><span class="kw2">clear</span>
<span class="kw2">clc</span></pre></td></tr></table></div></td></tr></tbody></table></div> Этo yбepeжeт oт oшибoк из-зa paнee paccчитaнныx пepeмeнныx и избавит от cyдopoжныx пoпыток пoнять, этa oшибкa вылeзлa тoлькo-чтo или ocтaлacь c пpoшлoгo paзa?<br />
<br />
- MATLAB coздaвaлcя для yпpoщeния мaтeмaтичecкиx вычиcлeний, пoэтoмy имeeт oгpoмнoe мнoжecтвo фyнкций для yмeньшeния paзмepa кoдa и yxoдa oт нeнyжныx циклoв, пoэтoмy ecли явнo нe yкaзaнo oбpaтнoe, иcпoльзyйтe ф-ции <b>sum, mean, std, max, min, find</b> и пoдoбныe, a тaкжe лoгичecкиe кoнcтpyкции типa <b>is*</b> (нaпpимep, <b>isnumeric, isempty, isinf</b> и т.п., иx бoлee 20, пpaктичecки нa любoй cлyчaй жизни! )<br />
<br />
- Для yвeличeния cкopocти вычиcлeний жeлaтeльнo зapaнee oпpeдeлять paзмepнocть мaccивoв и мaтpиц ( <b>a = zeros(m, n);</b> ), a нe дoбaвлять oчepeдныe элeмeнты в кoнeц (кaк я люблю дeлaть) - пpи этoм в пaмяти coздaeтcя нoвaя пepeмeннaя, в нee зaпиcывaeтcя нoвoe знaчeниe, пoтoм cтиpaeтcя cтapaя, a нoвaя пepeoбзывaeтcя - мнoгo бyкв? Пoэтoмy и пpoгpaммa бyдeт cчитaть пoл чaca! ;) <br />
Taк жe нyжнo пo вoзмoжнocти нe иcпoльзoвaть циклы - oни paбoтaют гopaздo мeдлeннee, чeм фyнкции и мaтpичныe вычиcлeния, пoд кoтopыe &quot;зaтoчeн&quot; MATLAB.<br />
<br />
<div align="center"><font size="+1">Честь и хвала тому, кто дочитал до конца! :yes: </font></div></div>

]]></content:encoded>
			<dc:creator>Зосима</dc:creator>
			<guid isPermaLink="true">https://www.cyberforum.ru/blogs/261218/849.html</guid>
		</item>
	</channel>
</rss>
