Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将复杂向量从Matlab保存到文本文件_Matlab_Complex Numbers - Fatal编程技术网

将复杂向量从Matlab保存到文本文件

将复杂向量从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') 向量的存储方式如下:

我用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')
向量的存储方式如下:

但我希望它以这种方式存储: 每个复数都应该存储在新行和实部,虚部应该用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')?(≥ 回答得很好。欢迎来到堆栈溢出!非常感谢。我一直想回答,但我很晚才打开了特权。除息的