为什么我在MatLab中使用‘uable’时会得到一个复数?

xvw2m8pv  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(162)

我有数据文件包括两种类型的数字,实数(分数和整数)和复数。但当我使用‘uable’时,所有数据都会变得复杂(当然,0i是虚数部分)。看看figure,有什么建议可以去掉那些自动出现的虚构部件吗?

u0sqgete

u0sqgete1#

有一条路可以绕过去。
1.-假设您的数据是

c2 =   1.0e+02 *[  0.997200000000000 + 0.000000000000000i -2.980950000000000 - 2.615070000000000i  -5.201680000000000 - 5.166180000000001i -1.654660000000000 + 8.841020000000000i
 -7.100910000000000 - 0.214950000000000i  0.264990000000000 + 0.000000000000000i    -7.533630000000000 - 1.921760000000000i -9.006920000000001 + 0.000000000000000i
  7.060630000000000 + 0.000000000000000i -1.963840000000000 + 5.605040000000000i   -6.321850000000000 + 0.000000000000000i  8.054330000000000 + 1.504170000000000i
  2.441100000000000 + 8.001080000000000i -8.480670000000000 - 2.205220000000000i   -5.200950000000001 - 7.360539999999999i  8.895750000000000 - 8.804410000000001i]

然后

hf1 = uifigure;
uit = uitable(hf1,'Data',c2);

当您尝试强制转换或直接写入空虚部分元素时,只要单个元素具有非空虚部分,用uable显示的表就会在表中的所有元素上保留0i。以下方法不起作用

uit.Data(1,1)

uit.Data(1,1)=real(uit.Data(1,1))

uit.Data(1,1)=49

if imag(c2(:))==0 c(:)=real(c(:)); end

2.-现在让我们将馈送到uitable的数据转换为字符

c10={};
for k=1:1:numel(c2)
c10=[c10 strip(num2str(c2(k)))];

end
c10=reshape(c10,size(c2));

hf2=uifigure;
uit2=uitable(hf2,'Data',c10)

现在,使用uitable生成的结果表符合问题中的要求,即虚部为空的表元素不会显示0i
补充评论:我使用以下代码生成了随机的4x4

simulating data
a=1e-3*randi([-1e6 1e6],1,16);
b=1e-3*randi([-1e6 1e6],1,16);
b(unique(randi([1 16],1,randi([4 12],1,1))))=0;
c=a+b*1j;
c2=reshape(c,[4 4])

相关问题