SCIRun User Mailing List

## [SCIRUN-USERS] Re: Re: Fwd: larger linear system for testing in FwdInvToolbox

• From: 向华 <hxiang@whu.edu.cn>
• To: Jaume <arbalak@gmail.com>
• Cc: "Dan White" <dwhite@sci.utah.edu>, "Petar Petrov" <pip010@gmail.com>, "scirun-users@sci.utah.edu" <scirun-users@sci.utah.edu>
• Subject: [SCIRUN-USERS] Re: Re: Fwd: larger linear system for testing in FwdInvToolbox
• Date: Wed, 15 Jan 2014 10:48:58 +0800 (CST)

Hi Jaume,
I am very appreciated of your giving so many helpful comments. In fact I had done some similar things as you said. I do mathematics and I would like to test a problem with practical background. That is the reason why I try to use FwdInv Toolbox in SCIRun. The example provided by the tutorial book is too small to me (I mean the size is small). I am a lazy guy, so I ask for help to find a short cut way to generate a big test case. Anyway, thank you very much.
All the best,
Hua

-----原始邮件-----

Hi Hua,

If you are interested in solving some linear system you can generate it yourself in matlab.

You just need to create a matrix A of size MxN (any M and N) and then a "true" solution vector x of size (Nx1). You can even use randn.
Then the SCIRUN network will generate y, will add noise and try to solve back x.

Tikhonov inverse is thought to try to accommodate for ill-posed problems, but if the matrix A is too ill-conditioned, the solutions may be frustrating. Look at the matrix properties before blindly applying to know what you are doing first.

In this case, the part involving the geometry won't be useful since it won't really make any sense to plot there. I suggest you save the output and compare it numerically in matlab itself.

I hope this helps.
Best,

Jaume

On Sun, Jan 12, 2014 at 9:41 AM, 向华 wrote:
Hi Jaume,
Thank you very much for your detailed explanations. I'd like to have a large linear system for testing. I use it as a case to test my numerical algorithm.
I do not use it to solve a bioelectric problem. It should be great to solve such a problem. But it will not be easy, I think.
Regards,
Hua

-----原始邮件-----

Hi Hua,

Right now, I am not sure what is your need exactly so let me try to explain what I understood so you know where I am.
(I'll be using the toolkit guide as a reference for both of us)

You are trying to use the network tikhonov-inverse from the FWD/INV_ECG toolkit but found that the system it is solving is too simple for you.
When you say this, do you mean that you would like to see how SCIRUN solves any big inverse problem or that you need it for a particular bioelectric case?
This is the main point that confuses me and can lead to two answers, one simple and the other complex.
[ Currently I just need the simple one: I want to generate a bigger test case.]

To simply load new matrices take look at the network (there's an image at page 35 of the guide). You'll see that there are three input modules: two ReadMatrix and one ReadField.
In order from left to right, these load the forward matrix (A), the solution potentials (x) and a heart geometry for visualization. These load the files you mentioned above.
So if you click on the UI button of each one of them, a menu will pop-up where you can choose a new file, there are different formats you can choose from too.
[ I just know to use the following 3 files for testing: for_mat_128.mat, epi_pot_128_fr_170to190.mat, 25feb97_sock_closed.fld. Are there any other similar files which I can load?
or shall I run any other modules and generate such files myself? ]

Nevertheless, these files must have the following format:
- A - must be a MXN real matrix (current SCIRUN does not support complex, will come in the next version)
- x - must be a NXT real matrix with the hidden data, (we can now consider T=1 for simplicity).
- and the field a geometry of N nodes to plot the potentials on top.
[ I can save these data A and x, and read them in Matlab. After solving the problem in Matlab, I reload the computed results in SCIRUN, and draw the pictures by using that fld file. ]

Note that this netwrok first solves y, adds noise to it and then tries to estimate x from that noisy y, so you don't have to load y in this network (you could change this in general).

Now, if you want to solve any linear system, just change A and x  for any pair of matrices of appropriate dimensions and see how it works.
[ I do not know how to change A and x. I can just run one case provided by the tutorial, that is, using for_mat_128.mat, epi_pot_128_fr_170to190.mat, 25feb97_sock_closed.fld. ]

If, instead you are interested in solving a bioelectric problem, it gets a little more complicated.
You will first need the discretized closed surface geometries of, in this case, heart and torso and then solve the forward problem.
[ That is what I want to do. But it seems hard to me currently. In fact, I am a beginner to use SCIRun. ]
An option to do so would be BEM from which you can find an example network in torso-tank-bem.srn .
Once you have solved this problem you could now use the resulting forward matrix A (output of module BuildBEMatrix) as an input for the tikhnov case.

Best,

Jaume

On Thu, Jan 9, 2014 at 4:16 AM, 向华 wrote:
Hello,
Excuse me. I have a simple question about using FwdInvToolbox, in which there is an example, tikhonov-inverse.srn.
The module that solves the inverse problem by means of Tikhonov regularization is SolveInverseProblemWithTikhonov, in which I find that there is a linear system
Ax=b.
After importing it into Matlab, I find that A is a matrix of the size 771-by-128. The size of this linear system is small.
I am interested in this linear system, and want to test a larger linear system, for example, the matrix A with the size of several thousands. My question is how I can get such larger linear system.
I think I need to use finer grids and change the three input data files:
for_mat_128.mat
epi_pot_128_fr_170to190.mat
25feb97_sock_closed.fld
But how to generate these files? Can anybody here help me? Thank you very much in advance.
Best regards,
Hua