登录论坛

查看完整版本 : [MATLAB基础] 无解吗:导入数据后,转化为复矩阵


nissen
2009-08-22, 03:22
问题描述:

1. 实数型数据为保存在工作目录下的data.txt,按实部和虚部分隔分成2列数据,示例文件内容为
1.3 -0.2
2.1 11
3.5 2
接下来试图通过m命令文件将数据读入并转化为下面的3x1复数矩阵。
1.3-0.2i
2.1+11i
3.5+2i


2. 尝试用两个矩阵的复数计算合成,m命令文件内容为
clear;
data=load('data.txt');
for i=1:3
re(i,1)=data(i,1);
im(i,1)=data(i,2);
end

TransMat=re+i.*re;
结果意外的得到3x1的实数矩阵

3. 再尝试用矩阵元素复数计算后填入新矩阵,其m命令内容为
clear;
data=load('data.txt');
for i=1:3
TransMat(i,1)=data(i,1)+i.*data(i,2);
end
结果仍然是意外的3x1实数矩阵

2或3的m命令执行后,用whos命令查看矩阵类型,得到的结果均为
TransMax size=3x1 class=double array


我也google过"matlab complex array",但这方面的问题好像没有答案。在这里向大家求教,请帮帮我!谢谢。

nissen
2009-08-22, 14:29
请大家给我出出主意,顶一下帖子。
:confused:

nissen
2009-08-22, 20:20
找到答案了。

只要将m文件循环体内运算语句中的虚数单位i改写成j即可。看来在这里matlab将i看成循环语句for i=1:8中的数值了。

wingedsteed
2009-08-23, 14:04
找到答案了。

只要将m文件循环体内运算语句中的虚数单位i改写成j即可。看来在这里matlab将i看成循环语句for i=1:8中的数值了。

我写的,如下:
clear;
data=load('data.txt');
for k=1:3
re(k,1)=data(k,1);
im(k,1)=data(k,2);
end
TransMat=re+im*i




>> mdata

TransMat =

1.3000 - 0.2000i
2.1000 +11.0000i
3.5000 + 2.0000i