"Reference to non-existent field" Error
1 次查看(过去 30 天)
显示 更早的评论
I get this error (Reference to non-existent field 'system'.) when I use this line to call "generate_channel_cell" function
H_cell= generate_channel_cell( system ) ;
The fuction code is as following:
function channel_cell = generate_channel_cell(system)
p = inputParser ;
p.FunctionName = 'generate_channel_cell' ;
p.addRequired ('system') ;
Nt = round( p.Results.system.Nt ) ;
Nr = round( p.Results.system.Nr ) ;
Ns = round( p.Results.system.Ns ) ;
K = round( p.Results.system.K ) ;
coeff_size = [K * Nr , K * Nt ] ;
coeffiecients = (randn(coeff_size ) + 1j .* randn( coeff_size ) ) ;
coeffiecients = (1 / sqrt ( 2 ) ) .* coeffiecients ;
Nr_values = repmat ([ Nr ] , 1 , K ) ;
Nt_values = repmat ([ Nt ] , 1 , K ) ;
channel_cell = mat2cell( coeffiecients , Nr_values , Nt_values ) ;
end % end function
0 个评论
采纳的回答
Guillaume
2019-9-8
编辑:Guillaume
2019-9-8
Well, yes, you never use the input parser to parse your input, so the Results never get populated.
p.parse(system);
after you've created the parser but before you use the Results.
edit: on the other hand, your input parser is not very useful, it only checks that one input has been passed but you'll get an error beforehand if it's not the case. You don't check that the input is a structure with the correct fields
You'd be better off with:
function channel_cell = generate_channel_cell(system)
assert(isstruct(system) && all(ismember(fieldnames(system), {'Nt', 'Nr', 'Ns', 'K'}), 'system must be a structure with fields Nt, Nr, Ns and K');
Nt = round( p.Results.system.Nt ) ;
%...
2 个评论
Guillaume
2019-9-9
Oops, yes, what I wrote was partly nonsense since I used the input parser that no longer existed. My answer should have read:
function channel_cell = generate_channel_cell(system)
assert(isstruct(system) && all(ismember(fieldnames(system), {'Nt', 'Nr', 'Ns', 'K'}), 'system must be a structure with fields Nt, Nr, Ns and K');
Nt = round(system.Nt);
%...
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Multirate Signal Processing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!