【问题标题】:matlab structure with two 1D arrays and one variable具有两个一维数组和一个变量的matlab结构
【发布时间】:2014-08-21 15:03:43
【问题描述】:

我想在 Matlab 中创建一个由两个一维数组和一个变量组成的结构。所以,我正在这样做:

IQinfo.I=inputI;
IQinfo.Q=inputQ;
IQinfo.fc=45e6;

但是,我的结构的大小是 1,我需要一个 1x3 的结构。我以前从未在 Matlab 中使用过结构,因此非常欢迎任何帮助! :)

谢谢!

【问题讨论】:

  • IQinfo 是 1x1,但有 3 个字段。这有什么问题?
  • 因为我将结构保存在 .mat 文件中,并从使用循环的程序中读取:索引从 1 到长度(结构)并检查 s(index)=I 和 I不明白! :(
  • 您能否将使用此结构的程序的相关部分添加到您的问题中?

标签: arrays matlab sorting data-structures


【解决方案1】:

我认为您混淆了结构的大小和它具有的字段数量。如果你创建一个这样的结构

>> iqinfo.I = [1, 2, 3];
>> iqinfo.Q = [4, 5, 6];
>> iqinfo.fc = 45e6;

那么它的大小是1x1

>> size(iqinfo)
ans =
     1     1

但它有 3 个字段

>> size(fieldnames(iqinfo))
ans =
     3     1

哪些是你分配的

>> fieldnames(iqinfo)
ans = 
    'I'
    'Q'
    'fc'

如果你想创建一个结构数组(结构数组),那么你可以这样做

>> iqinfo(2) = struct('I', [1 2 3], 'Q', [4 5 6], 'fc', 90e6);
>> iqinfo(3) = struct('I', [4 5 6], 'Q', [7 8 9], 'fc', 100e6);
>> size(iqinfo)
ans =
     1     3

【讨论】:

  • 我不确定这是否是我想要的。因为我只有一个向量 Q 和一个向量 I,但在函数中它会检查:s(k).name('I')、s(k).name('Q') 和 s(k).name( 'fc') for k=1:length(s)
  • 实际上,执行此操作的程序的指令说:“IQinfo 必须采用以下形式:IQinfo.I_data=1D 数组 I-data,IQinfo.Qdata=1D 数组 Q- data and IQinfo.clock=desire clock rate"
  • 并且它还说:“程序需要一个 '.mat' 文件,其中包含一个分别名为 I 和 Q 的一维 I 数据和一个一维 Q 数据数组。此外,'.mat' 文件必须包含时钟频率作为变量名为 fc"
  • @NataliaMolineroMingorance 看起来您正在尝试将结构字段保存为单独的变量。所以,也许这对你有用 - save('saved_data.mat', '-struct', 'IQinfo')。更多信息 - mathworks.in/help/matlab/import_export/…
  • @Divakar 耶!谢谢!!这就是我需要的!!谢谢你!! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 2022-08-18
  • 2011-02-04
  • 1970-01-01
相关资源
最近更新 更多