我正在尝试通过SNR_full(1,1) = SNR
将变量分配给数组。 SNR_full
初始化SNR_full = zeros(9,8);
但是,当我分配SNR_full(1,1)=SNR
时,SNR
是一个整数,值为2,但是当我选中SNR_full(1,1)=SNR
时,它显示50而不是2.我可以手动分配{ {1}},结果是2。
为什么会发生这种情况?
SNR_full(1,1)=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;
%-----------------------------------------
为2时,断点设置为SNR_full(1,1) = SNR
。
评论的更多信息:SNR
实际上是2的CHAR,因为我通过分析字母来获得SNR
(input_1_string
)的SNR。 / p>
在断点之前,'SynData2_12F20SNR2.asc'
全部为零。
这是所有变量的初始化
SNR_full
答案 0 :(得分:1)
如果char
原来是SNR
,则有一种可能性是从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_full(1,1) = str2num(SNR);
)进行修复。