2
$\begingroup$

enter image description here

I want to make a table that looks like the above image to record values from my function $\omega(m,n)$ as defined in the following Mathematica code:

\[Lambda]   = 1550 10^-9; (*Unit: m*)
c   = 2.99 10^8;   (*Unit: m/s*)
n0 = 1.2;
\[Mu]0 = 4 \[Pi] 10^-7;
\[Epsilon]0 = 8.854 10^-12; (*Unit: F/m*)
a    = 2. 10^-6;
b    = 0.22 10^-6; 

\[Omega][m_, n_] := \[Pi]/(n0*Sqrt[\[Mu]0 * \[Epsilon]0])*
  Sqrt[m/a^2 + n/b^2] (*Define the Cutoff Frequency function*)
\[Omega][0, 1]
\[Omega][1, 0]

The documentation has the nice Table tool, but I quite desire the style of the incomplete table in the above image. How can I replicate this?

$\endgroup$
2
  • $\begingroup$ I am getting different values than shown from your function w[m,n] for example !Mathematica graphics does not give 2.00 as you show. $\endgroup$
    – Nasser
    Aug 4, 2022 at 18:46
  • $\begingroup$ @Nasser Good observation. The provide table image is of the same function, but with different physical parameters. My $\omega(m,n)$ function will provide different values than shown in the image. $\endgroup$
    – KZ-Spectra
    Aug 4, 2022 at 18:54

2 Answers 2

4
$\begingroup$

Something to get you started. You can modify the Grid if you just want frame line around specific rows. Left as an exercise :)

Mathematica graphics

code

λ = 1550 10^-9; (*Unit:m*)
c = 2.99 10^8;   (*Unit:m/s*)
n0 = 1.2;
μ0 = 4 π 10^-7;
ϵ0 = 8.854 10^-12; (*Unit:F/m*)
a = 2. 10^-6;
b = 0.22 10^-6;

ω[m_, n_] := π/(n0*Sqrt[μ0*ϵ0])*Sqrt[m/a^2 + n/b^2] (*Define the Cutoff Frequency function*)
top = Table[n, {n, 0, 3}];
left = Table[m, {m, -1, 6}];
data = Table[ω[m, n], {m, 0, 6}, {n, 0, 3}]
data = PrependTo[data, top];
data = Transpose[Insert[Transpose@data, left, 1]];
g = Graphics[{Text[Style["n", 16], Scaled[{.75, .75}]], 
    Text[Style["m", 16], Scaled[{-.15, .25}]], 
    Line[{{0, 0}, {-1, 1}}]}, ImageSize -> 40];
data[[1, 1]] = g;
Grid[data, Frame -> All]

To adjust frame lines to make it as shown, replace the Grid command with

Grid[data, Frame -> All, Spacings -> {1, 1}, 
 Dividers -> {{False, True, Table[False, {4}]}, {False, True, 
    Table[False, {7}]}}]

Mathematica graphics

$\endgroup$
4
$\begingroup$

You could use this code based on TableForm:

ms=Range[0,6];
ns=Range[0,3];

tableData=Table[
  If[And[1<=m+n<=6,Implies[n==3,m<=0]],
     NumberForm[\[Omega][m,n],3],""],
  {m,ms},{n,ns}];

TableForm[tableData,TableHeadings->{
  Map["m="<>ToString[#]&,ms],
  Map["n="<>ToString[#]&,ns]}]

Result:

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.