게으른맽랩 lazy matlab
https://lazymatlab.tistory.com/
게으른맽랩 lazy matlab
피드

토리노의 말
게으른맽랩 lazy matlab
https://play-lh.googleusercontent.com/proxy/DyZGgmHurGfxKOlF_R62KRZuXxFO0LKy_osls-D9t-zR9AB2l9YlWplEOE2ncCAG3sEUV6iDq9oeMaHV9gFIvrw1XE4kJd7bcdNz0-bxG9-OPc_G8i2z0Rg=s1920-w1920-h1080 2시간 반 동안 딸이 아빠 옷 갈아입히고 우물에서 물 길어오고 감자 먹방하다가 끝나는 영화.전달하고자 하는 메시지가 뭔지 전혀 모르겠어서 챗GPT에게 물어봤다. 아래는 간단한 요약.---* 이 영화는 관객이 "이해"하기보다 "감당"하게 만드는 영화이다.* 영화가 전달하고자 하는 것은 "세계의 종말과 인간의 무력함"에 가깝다.* 하루가 지날수록 세상이 기능을 멈춘다. (말이 움직이기를 거부함 -> 우물이 마름 -> 등불이 켜지지 않음)* 창세기의 창조 과정을 거꾸로 돌린 것으로 볼 수 있다.* 농부와 딸은 끝까지 저항하지 않는다. * 그들의 행위는 생존을 위한 저항이 아니라 습관의 관성일 뿐이다.* 감독 벨라 타르는 인간이 근본적으로 아무것도 바꿀 수 없는 존재론적 피로 속에 갇혀 있음을 보여준다.* 결국 이 영화는 세계가 끝나는 과정을 느리게 목격시키면서, 인간은 그 속에서 아무것도 할 수 없음을 체험시킨다.---우물이 마르자 아빠와 딸이 짐 싸서 떠났다가 금방 돌아오는 장면이 있다. 이제 여기선 더 이상 살 수도 없는데 왜 돌아오지? 그러다 문득 이런 생각이 들었다. 세상은 시뮬레이션이고, 그 시뮬레이션이 끝나고 있다. 더 이상 갈 곳이 없다. 지금 여기 말고는 존재하지 않기 때문이다. 그러다 마지막엔 빛조차 없어지고 모든 것이 소멸되는 진정한 끝. 그 안에서 인간이 할 수 있는 것은 아무것도 없다. 카뮈가 이 영화를 봤다면 뭐라고 말했을까.
2일 전

파이썬에서 3차원 그래프 interactive하게 회전시키기
게으른맽랩 lazy matlab
매트랩에서는 그래프를 그리면 항상 회전이 가능한데, 파이썬의 matplotlib에서는 함수를 이용한 회전밖에 되지 않는다. 매트랩처럼 마우스로 interactive하게 회전하려면 plotly를 이용해야 한다. 먼저 데이터를 준비한다. import plotly.graph_objects as goimport numpy as npx = np.linspace(-5, 5, 100)y = np.linspace(-5, 5, 100)X, Y = np.meshgrid(x, y)Z = np.cos(X) * np.cos(Y) plotly.graph_objects.Surface에 x, y, z 값을 넣으면 plotly.graph_objs._surface.Surface 객체가 만들어진다. 자세한 내용은 공식 페이지를 확인해보자. 이 객체를 plotly.graph_objects.Figure에 data로 넣으면 plotly.graph_objs._figure.Figure 객체가 만들어지는데, 매트랩에서 Surface 객체와 비슷하다고 보면 된다. fig = go.Figure(data=[go.Surface(x=X, y=Y, z=Z)]) 이제 show()를 호출하면 그래프가 뜬다. fig.show() 마우스로 잡고 움직이면 회전한다. 참고로 그래프는 웹브라우저 또는 유사 환경에서만 볼 수 있다. plotly가 JavaScript로 구현되어 있기 때문이라고 한다. Figure 객체를 만드는 방식을 보면 Surface 객체를 여러 개 넣을 수 있음을 눈치챌 수 있다. fig = go.Figure(data=[go.Surface(x=X, y=Y, z=Z), go.Surface(x=X, y=Y, z=Z + 3)])fig.show() Figure 객체의 옵션은 update_layout 메서드로 바꿀 수 있다. 무엇보다 perspective view인 것이 마음에 들지 않는다. Orthographic view로 바꾸려면 아래와 같이 쓴다. fig.update_layout(scene=dict( camera
3일 전

Matlab snow
게으른맽랩 lazy matlab
Just for archiving (MATLAB discussions) clearclose allclc% inspired from: https://www.youtube.com/watch?v=3CuUmy7jX6k%% user parametersh = 768;w = 1024;N_snowflakes = 50;%% set figure windowfigure(NumberTitle="off", ... name='Mat-snowfalling-lab (right click to stop)', ... MenuBar="none")ax = gca;ax.XAxisLocation = 'origin';ax.YAxisLocation = 'origin';axis equalaxis([0, w, 0, h])ax.Color = 'k';ax.XAxis.Visible = 'off';ax.YAxis.Visible = 'off';ax.Position = [0, 0, 1, 1];%% first snowflake ht = gobjects(1, 1);for i=1:length(ht) ht(i) = hgtransform(); ht(i).UserData = snowflake_factory(h, w); ht(i).Matrix(2, 4) = ht(i).UserData.y; ht(i).Matrix(1, 4) = ht(i).UserData.x; im = imagesc(ht(i), ht(i).UserData.img); im.AlphaData = ht(i).UserData.alpha; colormap grayend%% falling snowflaketic;while true % add a snowflake every 0.3 seconds if toc > 0.3 if length(ht) < N_snowflakes ht = [ht; hgtransform()]; ht(end).UserData = snowflake_factory(h, w); ht(end).Matrix(2, 4) = ht(end).UserData.y; ht(en
18일 전

Field axioms and propositions
게으른맽랩 lazy matlab
MathJax = { tex: {inlineMath: [['$', '$'], ['\\(', '\\)']]} }; https://en.wikipedia.org/wiki/Field_(mathematics) Field axiomsA set $F$ is a field if it satisfies the following axioms. A1. $(a+b) + c = a + (b + c)$A2. $\exists 0, \forall a\in F, a + 0 = a$A3. $\forall a\in F, \exists -a\in F, a + (-a) = 0$A4. $a + b = b + a$M1. $(a\cdot b)\cdot c = a\cdot(b\cdot c)$M2. $\exists 1, \forall a\in F, 1\cdot a = a$M3. $\forall a\in F, \exists a^{-1}\in F, a \cdot (a^{-1}) = 1$M4. $a \cdot b = b \cdot a$D. $a\cdot(b + c) = a\cdot b + a\cdot c$ Propositions Prop 1. $\forall a\in F, a\cdot0 = 0$pf) \begin{align}1 + 0 &= 1 &&\;\text{ by A1} \\(1+0)\cdot a &= 1\cdot a \\1\cdot a + 0\cdot a &= 1\cdot a &&\;\text{ by D} \\a + 0\cdot a &= a &&\;\text{ by M2} \\-a + a + 0\cdot a &= -a + a \\0 + 0\cdot a &= 0 &&\;\text{ by A3} \\0\cdot a &= 0 &&\;\text{ by A2} \\\end{align} Prop 2. $a\cdot(-b) = -(a\cdot b)$pf)\begin{align}a\cdot 0 &= 0 &&\;\text{ by Prop 1} \\a\cdot(b + (-b)) &= 0 &&\;\text{ by A3} \
19일 전

On Normal Distributions
게으른맽랩 lazy matlab
MathJax = { tex: {inlineMath: [['$', '$'], ['\\(', '\\)']]} }; https://en.wikipedia.org/wiki/Normal_distribution A normal distribution is defined by two parameters; mean $\mu$ and variance $\sigma^2$. The $n$-th moment of normal distribution is defined as the expectation of $x^n$; The 0-th moment is the sum of $p(x)$ which should be 1. However $e^{-x^2}$ can not be integrated as a closed form. Fortunately, the value of integration over $(-\infty, \infty)$ can be found. Let us set $\mu$ be 0 for simplicity. Therefore $I_0 = 1$. The 1st moment is the expectation of the random variable itselt which should be $\mu$. The 2nd moment is the variance by definition. If $n$ is odd, $I_n$ is zero because the integrand is an odd function. If $n$ is even, the n-th moment is calculated as follows: Calculation of $J_n$ is a little tricky. Because $n$ is even, $J_n$ is Summarizing, $I_n$ is
22일 전

pie 대신 piechart를 쓰자
게으른맽랩 lazy matlab
pie가 레거시가 되었습니다. R2023b부터는 piechart가 권장됩니다. 기본 동작은 pie와 비슷하게 데이터를 바로 넣으면 됩니다. data = [1, 2, 3, 4];piechart(data) 마우스를 올리면 해당 조각의 정보를 보여줍니다. 각 조각에 이름을 붙이고 싶다면 data 뒤에 레이블을 넣어주면 됩니다. data = [1, 2, 3, 4];piechart(data, ["Rust", "C++", "Python", "Matlab"]) Categorical 자료를 넣으면 알아서 개수를 세서 그려줍니다. responses = categorical([ "MATLAB", "Python", "C++", "MATLAB", "Python", ... "Python", "C++", "JavaScript", "MATLAB", "MATLAB"]);piechart(responses) 파이 조각의 순서를 바꾸고 싶다면 reordercats를 이용합니다. responses = categorical([ "MATLAB", "Python", "C++", "MATLAB", "Python", ... "Python", "C++", "JavaScript", "MATLAB", "MATLAB"]);piechart(reordercats(responses, ["MATLAB", "Python", "C++", "JavaScript"])) 테이블과 합이 잘 맞습니다. languages = ["MATLAB", "Python", "C++", "JavaScript", "Rust", "Julia"]';votes = [5, 4, 2, 2, 3, 1]';T = table(languages, votes);piechart(T, "votes", "languages") Direction 옵션으로 반시계 방향으로 돌릴 수 있습니다. piechart(T, "votes", "languages", Direction="counterclockwise") StartAngle 옵션으로 시작 위치를 조정할 수 있습니다. piec
한 달 전

매트랩에서의 클로저
게으른맽랩 lazy matlab
https://edward-huang.com/tech/javascript/closure/functional-programming/programming/2020/02/13/what-is-really-so-special-about-javascript-closure/ 매트랩 커뮤니티에 MATurtle 코드를 올렸다. 파이썬의 turtle을 매트랩에서 그대로 구현한 것이었다. 코드 리팩토링 과정에서 ChatGPT의 도움을 많이 받았는데, 가장 도움 받은 것은 클로저(closure)였다. MATurtle에서 클로저가 어떻게 쓰였는지는 나중에 따로 설명하기로 하고, 이번 글에서는 매트랩에서 클로저를 만들고 사용하는 방법에 대해 알아본다. 간단히 말하자면, 클로저는 함수(동작)에 변수(상태)를 묶어서 관리할 수 있는 유닛이다. 함수와 변수를 묶는다고 하면 클래스가 먼저 생각나지만, 매트랩에서 클래스를 만들려면 별도의 M-파일을 만들어야 하는 번거로움이 있다. 클로저는 하나의 파일 안에서 nested function을 이용해서 구현할 수 있다. 예제를 먼저 보자. function c = counter(init)c = @next; function newval = next() init = init + 1; newval = init; endend>> c = counter(10)c = function_handle with value: @counter/next>> c()ans = 11>> c()ans = 12>> c()ans = 13>> 함수 counter는 값 init을 입력받는다. 그리고 nested function인 next의 핸들을 반환한다. 따라서 global 변수 c를 호출할 때마다 실제로는 next가 실행된다. c가 @counter/next라고 적힌 것이 이것을 설명한다. 그런데 c()를 실행할 때마다 값이 1씩 올라간다. 변수의 scope을 잘 봐야 한다. Nested function은 상위 함수의 scope에 접근할 수 있다. 따라서 next 안에서 init을 참조할
한 달 전

내적 공간에 대해
게으른맽랩 lazy matlab
MathJax = { tex: {inlineMath: [['$', '$'], ['\\(', '\\)']]} }; https://en.wikipedia.org/wiki/Inner_product_space 우리는 $\mathbb{R}^2$를 다룰 때 마음 속에 아래와 같은 공간을 상정한다. 그런데 생각해보면 $\mathbb{R}^2$는 두 실수 $a$와 $b$에 대해서 $(a, b)$를 모은 것일 뿐, 여기에 길이나 각도를 준 적이 없다. 예를 들면 2차 다항식의 공간 $\mathbb{R}_2[x]$는 3차원 벡터공간인데, 이것의 기저를 $\{1, x, x^2\}$로 잡을 수는 있지만 $1$과 $x$가 직교하냐고 물으면 할 말이 없어진다. 익숙한 dot product는 아래와 같이 계산되는데, 이것은 사실 아래의 과정을 축약한 것이다. 여기서 표준기저는 모두 길이가 1이고 서로 직교한다는 가정이 깔려있다. 하지만 꼭 그래야 할 이유는 없다. 예를 들어 나는 $(1, 0)$과 $(1, 1)$의 길이가 1이고 두 벡터가 직교한다고 말하고 싶다. 이제 임의의 벡터 $(x, y)$는 이 공간 어딘가에 있을텐데, 그것의 "좌표"는 더 이상 $(x, y)$가 아니다. $(x-y, y)$가 좌표가 된다. 이 벡터의 길이는 얼마일까? 표준기저와 다른 기저로 좌표축을 잡았을 뿐, 피타고라스 정리는 여전히 만족한다고 말하고 싶다. 이 공간은 분명히 표준내적(dot product)이 주어진 공간과 다르게 생겼다. 내적도 다른 기호를 써야 할 것 같으니, 앞으로는 아래와 같은 기호를 쓰자. 하지만 dot product와 동일하게 bilinearity는 만족했으면 좋겠다. 앞에서 잡았듯이 $(1, 0)$과 $(1, 1)$의 길이가 1이고 두 벡터가 직교한다고 하자. 2차원 벡터공간에서 직교하는 두 벡터는 기저가 된다. $v_1 = (1, 0)$, $v_2 = (1, 1)$이라고 두자. 이제 표준기저 두 벡터는 아래와 같으며, 이들의 크기와 사이각은 아래와 같다. 이제 아래와 같은 행렬을
한 달 전

수학을 공부한다는 것
게으른맽랩 lazy matlab
https://www.yourfreecareertest.com/mathematician/ 0. 인셉션에는 멋있는 장면들이 많이 나오지만, 가장 기억에 남는 대사는 영화 극초반에 나온 다음 대사이다. 코브: 가장 끈질긴 기생충은 뭘까요? 박테리아? 바이러스? 아서: 코브씨가 말하려는 것은- 코브: 생각(idea)입니다.1. "수학 공부"에 대해 흔히들 갖고 있는 이미지가 있다. 수능 문제 잘 풀고, 중고등학생 과외를 기깔나게 해줄 수 있고, 수학적으로 신기한 거 많이 알고 있는 것. 어떤 면에서는 전공 수학과 대중과의 괴리에서 기인한 현상이라고 볼 수 있다. 제도권 수학과 전공 수학이 너무 다르기 때문이다. 제도권 수학은 순수히 "기술"을 가르치는 수학이다. 문제를 빠른 시간에 정확하게 풀고 정확한 답을 도출하는 기술. 나는 이것을 "매뉴얼식 공부"라고 부른다. 세탁기 매뉴얼을 보고 세탁기를 사용하듯, 수학 문제 풀이 매뉴얼을 익혀서 수학 문제를 푼다. 이것이 수학을 잘 하는 것이라는 생각(idea)에 갇혀있는 경우를 주위에서 종종 본다. 2. 문제 풀이? 요즘은 기계가 더 잘한다. 굳이 ChatGPT까지 가지 않아도 된다. Integral Calculator 사이트에 가서 복잡한 적분 문제를 풀게 시켜보자.3. 전공 수학을 처음 접하면 다들 당황한다. 집합론에 왜 공리가 필요한지, 자연수를 왜 1, 2, 3, ...이라고 쓰면 안되는지, 중간값 정리가 왜 자명하지 않은지... 이런 "당연한" 것들이 당연할 이유가 없음을 듣다 보면 어질어질해진다. 내가 개인적으로 가장 당황스러웠던 것은 귀류법과 배중률의 부정이었다. 어떤 명제가 참이거나 거짓이거나 둘 중 하나여야 함은 너무 자명한데, 이것조차 부정하는 수학자들이 있다고 한다.4. 전공 수학도 "매뉴얼식"으로 공부하려면 할 수 있다. 우스개 소리로암기가 싫어서 수학과에 왔는데, 시험 준비를 하다보니 수학도 암기과목이더라. 라는 말도 있다. 그런데 그렇게 공부해서 남는게 뭐가 있냐고 물으면 여전히 문제 풀이 기술밖
한 달 전

귀류법이란?
게으른맽랩 lazy matlab
MathJax = { tex: {inlineMath: [['$', '$'], ['\\(', '\\)']]} }; pixabay 시간을 달리는 소녀에서 주인공 마코토는 자기가 먹으려고 사둔 푸딩을 동생이 먹었음을 깨닫고 짜증을 낸다. 그런데 사실 마코토는 동생이 푸딩을 먹는 모습을 보지 못했다. 그렇다면 무슨 논리로 동생이 푸딩을 먹었음을 알았을까? 상황을 아래와 같이 단순화하자.- 마코토는 푸딩을 하나 사서 냉장고에 넣어두었다.- 밖에 나갔다 들어오니 푸딩이 없어졌다.- 그 사이에 집에 들어왔던 사람은 동생밖에 없다. 분명히 마코토는 동생이 푸딩을 먹는 모습은 보지 못했다. 하지만 우리는 알고 있다. 동생이 먹었다. 어떻게 알 수 있을까? 우리가 보이려는 명제는 아래와 같다. 푸딩이 없어졌고, 집에 들어왔던 사람은 동생밖에 없다 → 동생이 푸딩을 먹었다. 위 명제가 참이라면, 동생이 푸딩을 먹었음을 보이기 위해 전건을 확인하면 된다. 위 명제는 아래의 형태를 띠고 있는데, $$ P \to Q $$ 이것이 참인 것과 아래 명제가 거짓인 것은 동치이다. $$ P \wedge \sim Q $$ 즉, 아래 명제의 참거짓을 확인해보면 된다. 푸딩이 없어졌고, 집에 들어왔던 사람은 동생밖에 없는데,동생은 푸딩을 먹지 않았다. 이 명제는 모순이다. 따라서 $P \to Q$는 참이다. 그리고 $P$를 알고 있으므로 $Q$가 참이며, 동생이 푸딩을 먹은 것이 된다. 이것이 귀류법의 구조이다.
한 달 전