Matlab code for solving complex numbers

Click For Summary
The discussion revolves around solving a complex number equation for character impedance in MATLAB, specifically addressing an error message related to indexing. The user is attempting to compute the square root of the product of two complex expressions but is unsure about the correct syntax. It is suggested that the user should use additional parentheses to clarify the order of operations and ensure proper multiplication with operators. The importance of using element-wise operations with the correct syntax for complex numbers in MATLAB is emphasized, along with the recommendation to share the code for better assistance. Properly structuring the equation is crucial for obtaining the desired results.
Kayne
Messages
22
Reaction score
0
Hi All,

I have been trying to solve a complex number equation for character impedance with MATLAB but it continues to tell me that "indexing must appear last on index addressing". I am new to MATLAB so I think that my code is wrong.

What I am using is

complex sqrt (R+jwL)(G+jwC)

The values for R,w,L,G,C I add in when putting it into matlab.

is complex the right word to be using here?

The equation that I am trying to solve is

y=sqrt(R+jwL)(G+jwC)
 
Physics news on Phys.org
Kayne said:
Hi All,

I have been trying to solve a complex number equation for character impedance with MATLAB but it continues to tell me that "indexing must appear last on index addressing". I am new to MATLAB so I think that my code is wrong.

What I am using is

complex sqrt (R+jwL)(G+jwC)
I'm not sure what you mean by the above. As you have it, and using mathematical symbols, it means this:
\sqrt{R + jwL}(G + jwC)

I suspect that you want the square root of the product, which would look like this:
\sqrt{(R + jwL)(G + jwC)}

If that's the case, then using another pair of parentheses might be the fix.
complex sqrt ((R+jwL)(G+jwC))

Kayne said:
The values for R,w,L,G,C I add in when putting it into matlab.

is complex the right word to be using here?

The equation that I am trying to solve is

y=sqrt(R+jwL)(G+jwC)

Might this be the equation you're trying to solve?
y=\sqrt{(R+jwL)(G+jwC)}
 
You need to use operators for multiplying. i.e i*w*C (matrix multiplication) or i.*w.*L for elementwise operation.

Also, what Mark said. Use parentheses.
 
It would help us out a lot if you posted your code.
 
Code:
>> R = 1:5; L = 1:5; G = 1:5; C = 1:5; w = 20;
>> y = (R+1i*w*L).^(1/2).*(G+1i*w*C);
>> y'

ans =

  1.0e+002 *

  -0.5844 - 0.6793i
  -1.6530 - 1.9214i
  -3.0368 - 3.5298i
  -4.6754 - 5.4344i
  -6.5341 - 7.5948i

Here is the operation for a range of R, L, G, and C values giving a range of y values at a specific w. If you just want to use scalars all the way through, remove all the dots. So the first value corresponds to using R(1), L(1), and so on (which is 1 here for all). And y(2) corresponds to using R(2), L(2), and so on (which is 2 here for all).

Note, the .^ applies the power to each element in the matrix (as opposed to doing matrix computations, e.g. ^-1 would find the inverse of the matrix and .^-1 would make each element A_ij => 1/A_ij), and A.*B multiplies each element in A by the same element in B (C_ij = A_ij*B_ij) as opposed to * doing matrix multiplication. And 1i is the preferred representation of the complex i in matlab. Using anything else will give you an optimization warning, even if it works, e.g. i believe using i works too, but it is slower.
 
Last edited:

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 13 ·
Replies
13
Views
3K
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
2
Views
1K
Replies
7
Views
2K
  • · Replies 31 ·
2
Replies
31
Views
4K