# How to combine array columns to form complex number?

4 views (last 30 days)
Ted Baker on 18 Dec 2019
Commented: Stephen Cobeldick on 18 Dec 2019
I'm trying to combine two columns from two arrays to form a complex number. I know I can create a complex number using the complex(a,b) function and I think I am correct in addressing each column in the two arrays as S21real(:,2) and S21imag(:,2). As a results my code looks like
S21complex = complex(S21real(:,2), S21imag(:,2));
Where my data looks like
S21real:
690000000 0.00854245859320000 0
690193750 0.00915901995335000 0
690387500 0.00963277694145000 0
S21imag:
690000000 0.00854245859320000 0
690193750 0.00915901995335000 0
690387500 0.00963277694145000 0
However, when I run the code, I get the following error:
Error using complex
Real input A must be numeric, real, and full.
Can anyone shed some light as to where I am going wrong?

Fangjun Jiang on 18 Dec 2019
What release? Seems fine in R2019b.
>> S21complex = complex(S21real(:,2), S21imag(:,2))
S21complex =
0.0085 + 0.0085i
0.0092 + 0.0092i
0.0096 + 0.0096i
Ted Baker on 18 Dec 2019
I'm in 2019b too. :/ Here is my full code. I've attached the two full data files.
I am 99% sure I am working in the correct directory, etc.
% Parameters
filenamei = 'S21_I_BOOT_DRIVER_DIRECT.CSV';
filenamer = 'S21_R_BOOT_DRIVER_DIRECT.CSV';
S21complex = complex(S21real(:,2), S21imag(:,2));
Stephen Cobeldick on 18 Dec 2019
You use parentheses to access the two S21xxx tables, which the MATLAB documentation
makes clear, returns a table. But complex is not defined for table inputs.
To get the contents of that table (e.g. a numeric array) you need to use the correct indexing: curly braces {} or dot notation with the specific variable names.

Fangjun Jiang on 18 Dec 2019
Since you used table, you need to run
S21complex = complex(S21real.Var2, S21imag.Var2)

#### 1 Comment

Ted Baker on 18 Dec 2019
Thank you for the answer. It worked perfectly.