--- a/doc/comms.txi
+++ b/doc/comms.txi
@@ -136,7 +136,7 @@
 
 is not legal. The alphabet from which the symbols are chosen can be either
 a row vector or two row matrix. In the case of a row vector, all of the
-elements of the alphabet are chosen with an equi-probability. In the case
+elements of the alphabet are chosen with an equal probability. In the case
 of a two row matrix, the values in the second row define the probability
 that each of the symbols are chosen. For example
 
@@ -204,7 +204,8 @@
 octave:1> nse = wgn (10, 10, 0);
 @end example
 
-Which creates a 10-by-10 matrix of noise with a root mean squared power
+@noindent
+which creates a 10-by-10 matrix of noise with a root mean squared power
 of 0dBW relative to an impedance of
 @tex
 $1\Omega$.
@@ -233,15 +234,15 @@
    7.0805   7.1061   7.0730
 @end example
 
-All produce a 1W signal referenced to a
+Each of these produces a 1W signal referenced to a
 @tex
-$50\Omega$.
+$50\Omega$
 @end tex
 @ifnottex
 50 Ohm
 @end ifnottex
-impedance. @sc{matlab} uses the misnomer "dB" for "dBW", and therefore "dB" is
-an accepted type for @code{wgn} and will be treated as for "dBW".
+impedance. @sc{matlab} uses the misnomer "dB" for "dBW", so "dB" is an
+accepted type for @code{wgn} and is treated as a synonym for "dBW".
 
 In all cases, the returned matrix @var{v}, will be related to the input
 power @var{p} and the impedance @var{Z} as
@@ -309,7 +310,7 @@
 signal-to-noise ratio in a similar manner to @code{wgn}. This final
 argument can be either "dB" or "linear". In the first case the numerical
 value of the input power is assumed to be in dBW and the signal-to-noise
-ratio in dB.  In the second case, the power is assumed to be in Watts
+ratio in dB. In the second case, the power is assumed to be in Watts
 and the signal-to-noise ratio is expressed as a ratio.
 
 The return value of @code{awgn} will be in the same form as the input
@@ -508,7 +509,8 @@
 octave:9> [i, z2] = quantiz (y, table2, codes2);
 @end example
 
-Which the mapping suggested by the function @code{lloyds}. It should be
+@noindent
+to use the mapping suggested by the function @code{lloyds}. It should be
 noted that the mapping given by @code{lloyds} is highly dependent on the
 training signal used. So if this signal does not represent a realistic
 signal to be quantized, then the partitioning suggested by @code{lloyds}
@@ -563,7 +565,7 @@
 
 The error-correcting codes available in this package are discussed here.
 These codes work with blocks of data, with no relation between one block
-and the next.  These codes create codewords based on the messages to
+and the next. These codes create codewords based on the messages to
 transmit that contain redundant information that allow the recovery of
 the original message in the presence of errors.
 
@@ -577,12 +579,12 @@
 @node Data Formats, Binary Block Codes, , Block Coding
 @section Data Formats
 
-All of the codes described in this section are binary and share
-similar data formats. The exception is the Reed-Solomon coder which
-has a significantly longer codeword length in general and therefore
-using a different manner to efficiently pass data. The user should
-reference to the section about the Reed-Solomon codes for the data
-format for use with Reed-Solomon codes.
+All of the codes described in this section are binary and share similar
+data formats. The exception is the Reed-Solomon coder which has a
+significantly longer codeword length in general and therefore uses a
+different representation to efficiently pass data. The user should refer
+to the section about the Reed-Solomon codes for the data format used for
+Reed-Solomon codes.
 
 In general @var{k} bits of data are considered to represent a single
 message symbol. These @var{k} bits are coded into @var{n} bits of
@@ -768,7 +770,7 @@
 parity check and syndrome table matrices are very large. There is
 therefore an internal limitation on the size of the block codes that
 can be created that limits the codeword length @var{n} to less than 64.
-Which is still excessively large for the syndrome table, so use caution
+This is still excessively large for the syndrome table, so use caution
 with these codes. These limitations do not apply to the Reed-Solomon
 or BCH codes.
 
@@ -811,8 +813,8 @@
 
 Except for the BCH codes, the function @code{encode} and @code{decode}
 internally create the generator, parity check and syndrome table
-matrices.  Therefore if repeated calls to @code{encode} and @code{decode}
-are made it will often be faster to create these matrices externally,
+matrices. Therefore if repeated calls to @code{encode} and @code{decode}
+are made, it will often be faster to create these matrices externally
 and pass them as an argument. For example
 
 @example
@@ -1717,7 +1719,7 @@
 @table @code
 @item @var{x} + @var{y}
 Addition. If both operands are Galois arrays or matrices, the number of rows
-and columns must both agree.  If one operand is a is a Galois array with a
+and columns must both agree. If one operand is a is a Galois array with a
 single element or a scalar, its value is added to all the elements of the
 other operand. The @code{+} operator on a Galois Field is equivalent to an
 exclusive-or on normal integers.
@@ -1734,15 +1736,15 @@
 Element by element subtraction. This operator is equivalent to @code{-}.
 
 @item @var{x} * @var{y}
-Matrix multiplication.  The number of columns of @var{x} must agree
+Matrix multiplication. The number of columns of @var{x} must agree
 with the number of rows of @var{y}.
 
 @item @var{x} .* @var{y}
-Element by element multiplication.  If both operands are matrices, the
+Element by element multiplication. If both operands are matrices, the
 number of rows and columns must both agree.
 
 @item @var{x} / @var{y}
-Right division.  This is conceptually equivalent to the expression
+Right division. This is conceptually equivalent to the expression
 
 @example
 (inverse (y') * x')'
@@ -1760,7 +1762,7 @@
 Element by element right division.
 
 @item @var{x} \ @var{y}
-Left division.  This is conceptually equivalent to the expression
+Left division. This is conceptually equivalent to the expression
 
 @example
 inverse (x) * y
@@ -1775,18 +1777,18 @@
 to find a solution, but this is not guaranteed to work.
 
 @item @var{x} .\ @var{y}
-Element by element left division.  Each element of @var{y} is divided
+Element by element left division. Each element of @var{y} is divided
 by each corresponding element of @var{x}.
 
 @item @var{x} ^ @var{y}
 @itemx @var{x} ** @var{y}
-Power operator.  If @var{x} and @var{y} are both scalars, this operator
-returns @var{x} raised to the power @var{y}.  Otherwise @var{x} must
+Power operator. If @var{x} and @var{y} are both scalars, this operator
+returns @var{x} raised to the power @var{y}. Otherwise @var{x} must
 be a square matrix raised to an integer power.
 
 @item @var{x} .^ @var{y}
 @item @var{x} .** @var{y}
-Element by element power operator.  If both operands are matrices, the
+Element by element power operator. If both operands are matrices, the
 number of rows and columns must both agree.
 
 @end table
@@ -1825,7 +1827,7 @@
 In addition the comparison operators @code{>}, @code{>=}, @code{<} and
 @code{<=} are available. As elements of the Galois Field are modulus
 2^@var{m}, all elements of the field are both greater than and less than
-all others at the same time.Thus these comparison operators don't make
+all others at the same time. Thus these comparison operators don't make
 that much sense and are only included for completeness. The comparison is
 done relative to the integer value of the Galois Field elements.
 
@@ -2074,7 +2076,7 @@
 @code{@var{x} = [1, 1, 0, 3]}. No particular selection criteria are
 applied to the chosen solution.
 
-In addition the fact that singular matrices are not treated, unless you
+In addition, because singular matrices cannot be solved, unless you
 know the matrix is not singular, you should test the determinant of the
 matrix prior to solving the linear system. For instance
 
@@ -2164,7 +2166,7 @@
 In all cases, the length of the vector to be transformed must be
 @code{2^M -1}. As the @code{dftmtx} creates a matrix representing the
 Fourier transform, to limit the computational task only Fourier
-transforms in GF(2^M), where M is less than or equal to 8, can be treated.
+transforms in GF(2^M), where M is less than or equal to 8, are supported.
 
 @node Function Reference, , Galois Fields, Top
 @chapter Function Reference