将复杂向量从Matlab保存到文本文件
我用Matlab生成了一个复数向量,我想将该向量保存到文本文件(.txt)中,作为C代码的输入,因此复数向量如下所示:将复杂向量从Matlab保存到文本文件,matlab,complex-numbers,Matlab,Complex Numbers,我用Matlab生成了一个复数向量,我想将该向量保存到文本文件(.txt)中,作为C代码的输入,因此复数向量如下所示: y = zeros(1,N); for n = 1:N y(n) = exp(-1i*(n-1)*k*d*sind(Qtgt)); end 因此,我尝试使用functon dlmwrite将向量保存到文本文件中: dlmwrite('data.txt', y, 'delimiter','\n','newline', 'pc') 向量的存储方式如下:
y = zeros(1,N);
for n = 1:N
y(n) = exp(-1i*(n-1)*k*d*sind(Qtgt));
end
因此,我尝试使用functon dlmwrite将向量保存到文本文件中:
dlmwrite('data.txt', y, 'delimiter','\n','newline', 'pc')
向量的存储方式如下:
但我希望它以这种方式存储:
每个复数都应该存储在新行和实部,虚部应该用coma分开有什么想法吗?lifay: 这有一个非常简单的修复方法:在
dlmwrite
的调用中,替换[real(y')、imag(y')]
以下是我的尝试:
N = 10;
y = zeros(1,N);
for n = 1:N
y(n) = exp(-1i*(n-1));
re = real(y(n));
im = imag(y(n));
fprintf('%6.10f,%6.10f\n',re,im)
end
filename = 'output';
dlmwrite(filename,[real(y)',imag(y')],'precision',16)
以上(假设我有一个稍微不同的公式)在我这边的输出是:
输出如“图片2”所示的原因是y
是行向量。除非程序员明确“告知”其他内容,否则MATLAB假定数组是行向量。MATLAB的dlmwrite
输出模拟了输入数组的形状,在本例中是一个行向量,因此,图2就是您得到的结果。要获得图3的输出,必须输入一个矩形矩阵。我在上面通过连接两(2)个被转换成列向量的行向量来实现这一点。要执行换位,请使用”
操作符,如图所示。请注意,我将real
函数的输出转置,然后将输入转置到imag
函数。这些函数还将其各自的输入阵列的形状模拟为各自的输出阵列。因此,[real(y'),imag(y')]
与[real(y'),imag(y')]
具有相同的效果
另外,不要忘记指定“precision”参数,以确保
dlmwrite
存储所有可能的数字,如果未指定,dlmwrite
将截断数字,并在C中的进一步计算中引入截断错误。这是否有效writematrix([real(y.)+,“+imag(y.),'data.txt')代码>?(≥ 回答得很好。欢迎来到堆栈溢出!非常感谢。我一直想回答,但我很晚才打开了特权。除息的