Never used matrices so I could be wrong. But I would create a buffer from a central point (which you can add manually) and use the radius of a circle (I'm assuming the radius is the same for all of them otherwise you may have to create more buffer layers). When buffering, set the segments to approximate to 99 to have a smoother perimeter:
You can then use Convert polygons to lines on the buffer layer.
And with the output, use Convert lines to points (both tools are from SAGA via the Processing Toolbox). This should give you a point layer which lies on the circumference of the circle.
Hope this helps.
EDIT:
When you use Convert polygon to lines, calculate the length of line via the Field Calculator by creating a new column (select Decimal numbers) and inserting this into the expression:
$length / 23
This will give the same length for each "segment".
Now when you run the Convert lines to points function, input the length you received into the Insert Distance field. This will produce a 23 points at the same length:
Alternative method:
Take your final Step 5 layer (with the 396 points) and open up the Attribute Table and Field Calculator. Create a new integer column (eg. RowNum) and insert this expression:
$rownum
This provides each field with a unique value. Next, select the Advanced Filter (Expression) at the bottom of the Attribute Table:
And enter this command (replace "RowNum" with your named column):
("RowNum") %17
This expression skips every 17th field (396/23 = 17, we want to keep every 17th field). Select ALL those fields shown and DELETE them. Then select the Show All Features at the bottom of the Attribute Table. You should now (let's all pray!) have 23 points. Remember to also save!
You could use the "Geometry by Expression" tool from the processing toolbox.
As input layer use your original CSV with all coordinate column, choose line as Output geometry type and use an expression like :
make_line( make_point( X_start , Y_start) , make_point( X_dest , Y_dest))
(replace the X_start , Y_start, X_dest and Y_dest by the actual field name of the respective coordinate)
This will create a new line layer with line joining your points.
If you just want to symbolize the line you could use the same expression in the geometry generator (in this case the line will only be displayed if the point is displayed, so if you set the geometry generator on starting point and zoom to the destination point enough to get the stating point out of frame the line will disappear)
Best Answer
This should be possible without any plugin using the default Processing tools, particularly Distance to nearest hub:
https://docs.qgis.org/testing/en/docs/user_manual/processing_algs/qgis/vectoranalysis.html#qgisdistancetonearesthublinetohub