在数组内分配变量会导致值的更改

时间:2013-11-17 07:49:57

标签: arrays matlab char

我正在尝试通过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,因为我通过分析字母来获得SNRinput_1_string)的SNR。 / p>

在断点之前,'SynData2_12F20SNR2.asc'全部为零。

这是所有变量的初始化

SNR_full

1 个答案:

答案 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

如果出现此问题,则可以使用str2numstr2double(例如SNR_full(1,1) = str2num(SNR);)进行修复。