보통 루아를 사용하여 표현이 알려진 커브의 좌표를 포함하는 데이터 파일을 생성합니다. 그런 다음 다른 프로그램으로 커브를 그립니다.루아 : 고정되지 않은 도메인을 반복하는 방법
그러나 첫 번째 플롯의 표현에서 매개 변수를 변경하여 얻은 커브를 플롯하려고합니다. I 소릴하고 파라미터 지수 (즉, 1, 1.5, 2 등)이다
예로, I는 y=x^1
, y=x^1.5
, y=x^2
등의 형태로 힘을 플롯하고 싶다. 여기
내 일반적인 작업 흐름의 예를 게시 (나는 것보다 코드가 더 나은 자신을 설명 희망) : 여기
-- test.lua
function POWER(x, y)
return x^y
end
local xmin = 0 -- x: the abscissa
local xmax = 10
local xstep = 0.1
local ymin = 1 -- y: the parameter
local ymax = 2
local ystep = 0.5
local A = {}
local ix = 1 -- dummy variable to index A as an array
for I = xmin, xmax, xstep do
A[ix] = {}
A[ix].x = I
A[ix].y = {}
for J = ymin, ymax, ystep do
table.insert(A[ix].y, POWER(I, J))
end
ix = ix + 1
end
local Out = io.stdout
--local Out = io.open("powerOUT.dat", "w")
Out:write(" x x^1 x^1.5 x^2\n") -- from here on out I have to adjust things manually if I change ymin, ymax or ystep
for _, v in ipairs(A) do
Out:write(string.format("%5.2f %10f %10f %10f\n",
v.x, v.y[1], v.y[2], v.y[3]))
end
내가 무엇을 얻을의 발췌 :
x x^1 x^1.5 x^2
0.00 0.000000 0.000000 0.000000
0.10 0.100000 0.031623 0.010000
0.20 0.200000 0.089443 0.040000
0.30 0.300000 0.164317 0.090000
...
xmin
, ... ymin
의 문제는 ... "자동"(즉, 이러한 변수 중 일부 값을 변경하고 이에 따라 데이터 파일을 변경하고 싶습니다.) 절차를 만들고 싶습니다.) 현재, 절차는 자동으로 가로 좌표는하지만 매개 변수 y
와, (I 도메인 및 샘플의 수를 변경할 수 있습니다)
그래서 질문입니다 (내가 게시 된 코드를 참조하십시오.) : 나는이 변경 될 때 가 어떻게 내 데이터 파일에 열을 추가 할 수 있습니다 수동으로 출력을 조정하지 않고도 y
- 값의 값을 변경 하시겠습니까? 이 예에서
ymax
및 ymax=5
-ystep
및 ystep=0.25
수동으로 스크립트의 끝에 :write
문을 변경하지 않고를 (말)?
N.B. 또한 데이터 파일의 첫 번째 줄은 새 값에 따라 조정해야합니다.
이 내가 좀하고 싶습니다 무엇 : 보조 노트로
x x^1.00 x^1.25 x^1.50 x^1.75 x^2.00 x^2.25 x^2.50 x^2.75 x^3.00 x^3.25 x^3.50 ...
0.00 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ...
0.10 0.100000 0.056234 0.031623 0.017783 0.010000 0.005623 0.003162 0.001778 0.001000 0.000562 0.000316 ...
0.20 0.200000 0.133748 0.089443 0.059814 0.040000 0.026750 0.017889 0.011963 0.008000 0.005350 0.003578 ...
0.30 0.300000 0.222025 0.164317 0.121608 0.090000 0.066607 0.049295 0.036482 0.027000 0.019982 0.014789 ...
...
, 내 절차가 최적이 아닐 수 있음을 인정, 그래서 어떤 제안을 환영합니다. 내 작업 흐름의 일반적인 생각은 모든 데이터를 단일 배열에 저장한다는 것입니다. 왜냐하면 ipairs()
을 사용하여 "올바른 순서"로 얻은 결과를 간단하게 인쇄 할 수 있기 때문입니다.
얼마나 많은 'y'값을 가질 지 모를 때 줄을 인쇄하는 방법에 대한 질문이 있습니까? 그렇다면 대답은 그럴 가능성이 있습니다. –
나에게, 당신이 무엇을 요구하고 있는지 분명하지 않다. 여기서 자동이란 무엇을 의미합니까? 2.5와 같이 새 y 값에 대해 새 열을 추가하고 해당 열을 파일에 추가 할 수있게 하시겠습니까? 코드가 어떻게 보이고 원하는 출력이 도움이 될지를 보여주는 예제입니다. – ryanpattison
@rpattiso : 저는 ymax와 ystep을 ymax = 5와 ystep = 0으로 바꾸고 싶습니다.25 스크립트의 끝에 ": write"문을 수동으로 수정하지 않고도 상대 열을 출력에 추가 할 수 있습니다. –