如何在Matlab中声明列大小不固定的矩阵?

如何在Matlab中声明列大小不固定的矩阵?,matlab,matrix,Matlab,Matrix,我有MATLAB代码,我需要转换成C使用MATLAB编码器。下面是几行代码: for k = 1 : K delay_points_local(k,:) = arg_max_tau(k) - 0.3 : step_tau : arg_max_tau(k) + 0.3; CFO_points_local(k,:) = arg_max_CFO(k) - 0.005 : step_CFO : arg_max_CFO(k) + 0.005; [g_prime_bar_al

我有MATLAB代码,我需要转换成C使用MATLAB编码器。下面是几行代码:

for k = 1 : K
    delay_points_local(k,:) = arg_max_tau(k) - 0.3  :  step_tau : arg_max_tau(k) + 0.3;
    CFO_points_local(k,:) = arg_max_CFO(k) - 0.005  :  step_CFO : arg_max_CFO(k) + 0.005;
    [g_prime_bar_all_relays_local(:,:,k)] = Importance_function_grid( y_rd , CFO_points_local(k,:) , delay_points_local(k,:));
end
我需要定义
delay\u points\u local
CFO\u points local
,其中行大小是固定的,但列大小是变化的(取决于
arg\u max\u tau(k)
)。下面是arg\u max\u tau(k)的代码:


如何定义这两个变量
delay\u points\u local
CFO\u points\u local
,以便将其转换为C?

如果我理解您的要求,您希望创建一个矩阵,其中每行都有可变数量的列。这在MATLAB中是不可能的。必须创建矩阵,其中每行的列数相同。您可能只能通过使用单元格数组来实现这一点。谢谢。我用过单元数组,但代码生成器显示错误,它不支持“单元数组”。啊,我错过了你的MATLAB编码器使用。在这种情况下,您必须重写MATLAB代码,这样它就不会将
delay\u points\u local
CFO\u points\u local
存储为矩阵。您可能只需要使用临时变量。如果在第一个
for
循环完成后,这些变量并不重要,那么只需这样做即可。如果我理解您的要求,您希望创建一个矩阵,其中每行有可变数量的列。这在MATLAB中是不可能的。必须创建矩阵,其中每行的列数相同。您可能只能通过使用单元格数组来实现这一点。谢谢。我用过单元数组,但代码生成器显示错误,它不支持“单元数组”。啊,我错过了你的MATLAB编码器使用。在这种情况下,您必须重写MATLAB代码,这样它就不会将
delay\u points\u local
CFO\u points\u local
存储为矩阵。您可能只需要使用临时变量。如果在第一个
for
循环完成后,这些变量并不重要,那么只需这样做即可。
for k = 1:K
    pdf_tau = step_CFO*sum(g_prime_bar_all_relays(:,:,k),1); 
    [~,tau_k_pos] = max(pdf_tau);
    arg_max_tau(k) = delay_points(1,tau_k_pos);

    pdf_CFO = step_tau*sum(g_prime_bar_all_relays(:,:,k),2);
    [~,CFO_k_pos] = max(pdf_CFO);
    arg_max_CFO(k) = CFO_points(1, CFO_k_pos);
end