Arrays 数组中变量的赋值会导致值的变化
我试图通过Arrays 数组中变量的赋值会导致值的变化,arrays,matlab,char,Arrays,Matlab,Char,我试图通过SNR\u full(1,1)=SNR为数组分配一个变量。SNR\u full由SNR\u full=0(9,8)初始化 但是,当我指定SNR\u full(1,1)=SNR时,SNR是一个整数,值为2,但当我选中SNR\u full(1,1)=SNR时,它显示50而不是2。我可以手动分配SNR\u full(1,1)=2,结果是2 为什么会发生这种情况 %----------------------------------------- input_string_1 = 'SynDa
SNR\u full(1,1)=SNR
为数组分配一个变量。SNR\u full
由SNR\u full=0(9,8)初始化代码>
但是,当我指定SNR\u full(1,1)=SNR
时,SNR
是一个整数,值为2,但当我选中SNR\u full(1,1)=SNR
时,它显示50而不是2。我可以手动分配SNR\u full(1,1)=2
,结果是2
为什么会发生这种情况
%-----------------------------------------
input_string_1 = 'SynData2_12F20SNR2.asc';
input_string_2 = 'GroundTruth2_12F20.asc';
[input_normalized, input_ground, threshold_vector, threshold_vector_spike, ...
seizures, SNR, Frequency_input, Frequency_ground, TP_get, FP_get] = ...
SARADC_with_Threshold_func_ver(input_string_1, input_string_2);
input_normalized_full(1,1,1:length(input_normalized)) = input_normalized;
input_ground_full(1,1,1:length(input_ground)) = input_ground;
threshold_vector_full(1,1,1:length(threshold_vector)) = threshold_vector;
threshold_vector_spike_full(1,1,1:length(threshold_vector_spike)) = threshold_vector_spike;
seizures_full(1,1,1:length(seizures)) = seizures;
SNR_full(1,1) = SNR;
Frequency_input_full(1,1) = Frequency_input;
Frequency_ground_full(1,1) = Frequency_ground;
TP_full(1,1) = TP_get;
FP_full(1,1) = FP_get;
%-----------------------------------------
编辑:
当SNR
为2时,断点设置在SNR\u full(1,1)=SNR
评论中的更多信息:SNR
实际上是一个2字符,因为我通过分析字母从输入字符串
('syndat2\u 12F20SNR2.asc'
)中获得了信噪比
在断点之前,SNR\u full
具有全零
这是所有变量的初始化
%-----------------------------------------
%Data for everything
input_normalized_full = zeros(9,8,25000);
input_ground_full = zeros(9,8,2);
threshold_vector_spike_full = zeros(9,8,250000);
seizures_full = zeros(9,8,250000);
SNR_full = zeros(9,8);
Frequency_input_full = zeros(9,8);
Frequency_ground_full = zeros(9,8);
TP_full = zeros(9,8);
FP_full = zeros(9,8);
%-----------------------------------------
一种可能性是,如果SNR
被证明是char
,则从char
自动转换为数字类型会产生副作用。字符'0123456789'
具有ASCII字符代码48到57。将这些单个字符中的一个指定给数字数组的元素时,该字符将转换为其数字表示形式。就是
>> char(48:57)
ans =
0123456789
>> double('0123456789')
ans =
48 49 50 51 52 53 54 55 56 57
将其中一个字符指定给数字数组时,会发生以下情况:
>> x=1:2
x =
1 2
>> x(2) = '2'
x =
1 50
如果这是一个问题,解决方法是使用str2num
或str2double
(例如SNR\u full(1,1)=str2num(SNR);
)。如果SNR
是char
,一种可能是从char
自动转换为数字类型的副作用。字符'0123456789'
具有ASCII字符代码48到57。将这些单个字符中的一个指定给数字数组的元素时,该字符将转换为其数字表示形式。就是
>> char(48:57)
ans =
0123456789
>> double('0123456789')
ans =
48 49 50 51 52 53 54 55 56 57
将其中一个字符指定给数字数组时,会发生以下情况:
>> x=1:2
x =
1 2
>> x(2) = '2'
x =
1 50
如果这是问题所在,解决方法是使用str2num
或str2double
(例如SNR\u full(1,1)=str2num(SNR);
)。您能在SNR\u full(1,1)=SNR之前显示谁的SNR
的输出吗代码>行?必要时设置断点。谢谢。这个函数的作用是什么:SARADC\u和\u Threshold\u函数(input\u string\u 1,input\u string\u 2)代码>如何初始化SNR
值?您需要查找此函数中的问题。感谢您的编辑,但是whos SNR
或class(SNR)
输出如何?能否在SNR\u full(1,1)=SNR之前显示whos SNR
的输出代码>行?必要时设置断点。谢谢。这个函数的作用是什么:SARADC\u和\u Threshold\u函数(input\u string\u 1,input\u string\u 2)代码>如何初始化SNR
值?您需要查找此函数中的问题。感谢您的编辑,但是谁的信噪比
或类(信噪比)
输出如何?这是我的答案,根据我的猜测,SNR
是一个char
而不是一个数字类型。这似乎是一个合理的猜测,但结果可能是错误的。如果不是的话,请发表评论,我会删除答案。如果我的想法被证明是愚蠢的,没有必要投反对票。:)我一天前才开始学习Matlab。没有想到这个问题。信噪比实际上是8个字符。因为我通过分析字母从输入字符串中得到信噪比。谢谢你的帮助@用户1157751我想这就是原因。但是你的意思是'2'
的char
?那就是数字50。我看到你从8->2编辑了你的问题。是的,它是数字2。有时它也是数字8。很抱歉造成混淆。这是我的答案,我的猜测是SNR
是char
而不是数字类型。这似乎是一个合理的猜测,但结果可能是错误的。如果不是的话,请发表评论,我会删除答案。如果我的想法被证明是愚蠢的,没有必要投反对票。:)我一天前才开始学习Matlab。没有想到这个问题。信噪比实际上是8个字符。因为我通过分析字母从输入字符串中得到信噪比。谢谢你的帮助@用户1157751我想这就是原因。但是你的意思是'2'
的char
?那就是数字50。我看到你从8->2编辑了你的问题。是的,它是数字2。有时它也是数字8。很抱歉搞混了。