首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组中变量的赋值会导致值的更改。

数组中变量的赋值会导致值的更改。
EN

Stack Overflow用户
提问于 2013-11-17 07:49:56
回答 1查看 60关注 0票数 1

我试图通过SNR_full(1,1) = SNR将一个变量赋值给数组。SNR_fullSNR_full = zeros(9,8);初始化

然而,当我赋值SNR_full(1,1)=SNR时,SNR是一个整数,值为2,但当我检查SNR_full(1,1)=SNR时,它显示的是50而不是2,我可以手动分配SNR_full(1,1)=2,结果是2。

为什么会发生这种事?

代码语言:javascript
复制
%-----------------------------------------
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_full(1,1) = SNR,当SNR为2。

的更多信息:SNR实际上是2的一个字符,因为我通过分析字母从input_1_string ('SynData2_12F20SNR2.asc')获得信噪比。

在断点之前,SNR_full有所有的零。

这是所有变量的初始化。

代码语言:javascript
复制
%-----------------------------------------
%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);
%-----------------------------------------
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-17 08:47:11

一种可能是自动将char转换为数字类型的副作用,如果SNR最终是char的话。字符'0123456789'具有ASCII字符代码48至57。当将这些单个字符中的一个分配给数字数组的元素时,该字符将转换为其数字表示形式。那是,

代码语言:javascript
复制
>> char(48:57)
ans =    
0123456789
>> double('0123456789')
ans =    
    48    49    50    51    52    53    54    55    56    57

当将这些字符中的一个赋值给数字数组时,会发生这样的情况:

代码语言:javascript
复制
>> x=1:2
x =
     1     2
>> x(2) = '2'    
x =
     1    50

如果这是问题所在,那么修复方法就是使用str2numstr2double (例如SNR_full(1,1) = str2num(SNR);)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20028489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档