Applying function to all cells in a matrix using it as a reference

Good day to everyone,
I've run into a problem which is best described using the following example. Given Matrix A which is defined as
% code
A=[.9 .8 .7
.6 .5 .4];
I need to transform all cells within the aforementioned Matrix A according to the following formula (Fisher's Z transformation)
where a is each cell in Matrix A. I want to create a matrix B where this is the result of this computation. The resulting matrix B would be
if true
% code
B=[1.47 1.09 0.86
0.69 0.54 0.42]
end
Here is the calculation which yielded the last data entry in matrix B

 Risposta accettata

Yes, and so what heppened when you typed that exactly into MATLAB like this:
format short g;
A=[.9 .8 .7
.6 .5 .4];
Z = 0.5 * log((1+A) ./ (1-A))
Did you see something that you did not expect? Or you didn't know ln was done by the log() function? Or you didn't know how to use ./ or parentheses? It's only one line of code virtually identical to your formula, so where are you having trouble?

3 Commenti

P.S. Let's not call "elements" "cells" because "cells" are a certain type of variable that is well described here.
Thank you for correcting my terminology, I will change the terms in the question. This works can you please explain why you added a period in your formula?
That does an "element-by-element" divide, rather than a matrix divide. Same as with .* and * - you know what a matrix multiply is, right? And that's different than if you must multiply a(1,1) by b(1,1) and a(2,1) by b(2,1). Matrix multiple multiplies a row by a column and then sums. It's very different.

Accedi per commentare.

Più risposte (0)

Categorie

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by