matlab - 将复杂向量从 Matlab 保存到文本文件
问题描述
我用 Matlab 生成一个复数向量,我想将该向量保存到文本文件 (.txt) 中,以在我的 C 代码中将其用作输入,因此复数向量如下所示:
y = zeros(1,N);
for n = 1:N
y(n) = exp(-1i*(n-1)*k*d*sind(Qtgt));
end
图片
所以我尝试了函数 dlmwrite 将矢量保存到文本文件中:
dlmwrite('data.txt', y, 'delimiter','\n','newline', 'pc')
像这样存储的向量: 图 2
但我希望它以这种方式存储: picture3
每个复数都应该存储在新行和实部中,虚部应该用 coma 分隔
任何想法吗?
解决方案
生活:
这有一个非常简单的解决方法:在对 的标注中dlmwrite
,将y
输入替换为[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 中的进一步计算。
推荐阅读
- java - 如何在解组期间强制 JAXB/Moxy 遵循顺序?
- flutter - Flutter:基于内容具有动态高度的选项卡
- r - 传单图例和调色板的对数刻度
- python-3.x - 如何使用 Python 在 fpdf 中居中表格?
- spring - 如何处理 SI HttpRequestExecutingMessageHandler 中的“Transfer-Encoding=chunked”
- flutter - 在真实设备上运行时,GeoLocation 包无法正常工作
- python - Cumsum Pandas groupby 两列
- python - 无法安装枕头模块
- flutter - Bloc Delegate:类只能扩展其他类。尝试指定不同的超类,或删除 extends 子句
- c++ - 循环在不应该的地方终止程序