小编Sar*_*ama的帖子

如何用零随机替换非零元素?

我有一个矩阵包括10下面的元素,用作网络邻接矩阵.

A =

    0     1     1     1
    1     1     0     1
    1     1     0     1
    1     1     1     0
Run Code Online (Sandbox Code Playgroud)

我想模拟对网络的攻击,所以我必须1随机替换一些特定百分比的元素0.我怎样才能在MATLAB中做到这一点?

我知道如何用零随机替换一定百分比的元素,但我必须确保随机替换的1元素是矩阵元素之一而不是零.

matlab

2
推荐指数
1
解决办法
1039
查看次数

在MATLAB中仅缩放一个轴

使用此命令,axis([XMIN XMAX YMIN YMAX]我们可以设置x轴和y轴的范围.

是否有任何方法可以缩放一个特定的绘图轴,而其他轴设置为自动缩放?

matlab plot axis figure matlab-figure

2
推荐指数
1
解决办法
167
查看次数

当'if'部分下的语句中出现错误时,如何将控件移动到"if-else"的else部分?

有没有办法使条件成为如果错误出现在语句/矩阵下的if 那么执行语句下else

即.

if (some condition)
some statment1/matrix1/variable1 
some statement2/matrix2/variable2
some statement3/matrix3/variable3

else newstatement/matrix %come to else part of the code if any of the statements 1,2 or 3 under if condition yields any error like dimension mismatch or anyother
end
Run Code Online (Sandbox Code Playgroud)

matlab

2
推荐指数
1
解决办法
54
查看次数

将数值数组转换为字符串单元格数组

鉴于矩阵: - A = [0 1 2 3 4 5];

我想将它转换为字符串单元格数组,如下所示: A = {'0' '1' '2' '3' '4' '5'};

我可以这样做:

A = [0 1 2 3 4 5];

for i=1:6
    A1{i}= num2str(A(i));
end
A1
Run Code Online (Sandbox Code Playgroud)

我想以更简单的方式做到这一点,没有循环.

arrays string matlab

2
推荐指数
1
解决办法
147
查看次数

如何使用命令行关闭神经网络训练窗口和自组织地图?

如何从命令行关闭以下MATLAB SOM示例创建的两个窗口?

>> x = simplecluster_dataset;
>> net = selforgmap([8 8]);
>> net = train(net,x);
>> view(net)
>> y = net(x);
>> classes = vec2ind(y);
Run Code Online (Sandbox Code Playgroud)

matlab neural-network self-organizing-maps matlab-figure

2
推荐指数
1
解决办法
538
查看次数

根据部分填充的向量形成"部分"单位矩阵

我正在按照下面描述的方案在MATLAB中使用向量形成矩阵:

给定是x包含任意顺序的1和0 的向量,例如

x = [0 1 1 0 1]; 
Run Code Online (Sandbox Code Playgroud)

由此,我想形成一个矩阵Y,描述如下:

  • Ym行,其中mx(here :)中的行数3.
  • 的每行Y中填充有一个在k第条目,其中k是一个在矢量的位置x(此处为:k = 2,3,5)
  • 对于x上面的示例,这将导致:

    Y = [0 1 0 0 0;
         0 0 1 0 0; 
         0 0 0 0 1]
    
    Run Code Online (Sandbox Code Playgroud)

    这与单位矩阵相同,其x=0排除了第(n)行.

我目前通过以下代码实现此目的:

x = [0,1,1,0,1]; %example from above
m = sum(x==1);
Y = zeros(m,numel(x));
p = 1;
for n …
Run Code Online (Sandbox Code Playgroud)

arrays matlab vector matrix matrix-multiplication

2
推荐指数
1
解决办法
138
查看次数

根据另一个矩阵中的排序对矩阵进行排序

我正在尝试基于另一个数组对数组进行排序.我尝试使用索引返回的sort方法,但它在某种程度上表现得很奇怪.

y = [1 2 3; 2 3 4] 
x = [1 3 4; 2 2 3] 
[yy, ii] = sort(y,'descend');
Run Code Online (Sandbox Code Playgroud)

yy =
   2     3     4   
   1     2     3

ii =
   2     2     2
   1     1     1
Run Code Online (Sandbox Code Playgroud)

但我x(ii)不是基于排序的矩阵y.

x(ii) =  
      2     2     2
      1     1     1
Run Code Online (Sandbox Code Playgroud)

我期待矩阵是:

x(ii) =

    2     2     3 
    1     3     4
Run Code Online (Sandbox Code Playgroud)

如何x根据另一个矩阵对矩阵进行排序y

arrays sorting indexing matlab matrix

2
推荐指数
1
解决办法
87
查看次数

如何最好地解决此 MATLAB 名称冲突?

我在 MATLAB 数据文件中保存了一些数据,其中每个文件的变量名称都是times. 当我现在尝试读取这些数据文件时,似乎与(我认为)内置函数产生了名称冲突times

线路:

load("matlabcode\eeglab2020_0//timesBxintIlow.mat","times"); 
times1=times;  
Run Code Online (Sandbox Code Playgroud)

导致错误:

Error using  .* 
Not enough input arguments.
Run Code Online (Sandbox Code Playgroud)

当我将其输入 MATLAB 控制台时,该错误实际上不会出现,但仅当我调用使用控制台中的 2 行的函数时才会出现)

我可以以某种方式更改变量“times”的名称吗?

我尝试找到内置函数:

which times
built-in (C:\Program Files\MATLAB\R2019b\toolbox\matlab\ops\@char\times)  % char method
Run Code Online (Sandbox Code Playgroud)

我不知道什么@char意思,但times似乎在文件夹中ops。但是,更改此文件的名称times不会更改错误消息。计划是以编程方式将名称更改为times_renamed,然后加载数据,然后将名称更改回来。

我也无法弄清楚如何从搜索路径中删除内置函数。

matlab path

2
推荐指数
1
解决办法
106
查看次数

使用具有不同x轴的子图绘制每个图

我正在尝试使用其中的三个情节来绘制图形subplot.y轴为所有三条曲线是从同一-11而x轴是2.5,5,和10分别 所有三个图的问题x轴对于所有这些图看起来都相似.我尝试使用,axis square但它改变了方块.我想第一曲线从左侧和结束的点处开始,而从在一个点的左侧和结束,其中它是第一曲线的x轴的距离两倍第二个开始.第三个图必须从左边开始,并在x轴是第一个图的x轴的thripple的点处结束.有没有办法做到这一点?

这是一个带有空图的示例,仅用于显示我希望我的图形看起来如何.

我使用下面的代码,但遗憾的是它无法正常工作

figure
subplot (3,1,1);
xlabel('x cm')                                              
ylabel('y cm')                                          
grid on
set(gca, 'XTick', 0:0.5:2.5)
set(gca, 'YTick', -1:1:1)
xlim([0 2.5]);
ylim([-1 1]);
% axis square
subplot (3,1,2);
xlabel('x cm')                                              
ylabel('y cm')                                          
grid on
set(gca, 'XTick', 0:1:5)
set(gca, 'YTick', -1:1:1)
xlim([0 5]);
ylim([-1 1]);
% axis square
subplot (3,1,3);
xlabel('x cm')                                              
ylabel('y cm')                                          
grid on
set(gca, 'XTick', 0:2:10)
set(gca, 'YTick', -1:1:1)
xlim([0 10]);
ylim([-1 1]); …
Run Code Online (Sandbox Code Playgroud)

matlab plot figure subplot matlab-figure

1
推荐指数
1
解决办法
292
查看次数

如何从符号表达式中提取所有数值到矩阵?

我在MATLAB中对符号多项式进行了部分分数分解,它给出了一个符号表达式,如下所示:

poly = -2i/(x - 1.0 - 1.7i) + 0.57i/(x - 1.0 + 1.1559i)
Run Code Online (Sandbox Code Playgroud)

如您所见,此符号表达式包含x变量和常量复数.如何从MATLAB中提取此表达式中的所有数值?不得丢失数字是真实的还是复杂的信息.

因此,对于给定的表达式poly,我将如何获得以下矩阵A:

A = [-2i, -1-1.7i; .57i, -1+1.1559i]

A =

     0 - 2i        -1 - 1.7i
     0 + 0.57i     -1 + 1.1559i
Run Code Online (Sandbox Code Playgroud)

还请注意,A应包含数字,而不是符号表达式poly.


我读了coeffs-function,但它要求输入是多项式.使用children-function我可以将符号表达式中的求和项除以符号表达式的向量,如下所示:

p = - 0.57735026918962576450914878050196i/(x - 1.0 - 1.7320508075688772935274463415059i) + 0.57735026918962576450914878050196i/(x - 1.0 + 1.7320508075688772935274463415059i);
terms = children(p)

terms = 
[ -0.57735026918962576450914878050196i/(x - 1.0 - 1.7320508075688772935274463415059i), 0.57735026918962576450914878050196i/(x - 1.0 + 1.7320508075688772935274463415059i)]
Run Code Online (Sandbox Code Playgroud)

matlab symbolic-math polynomials

1
推荐指数
1
解决办法
95
查看次数