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。很抱歉搞混了。