我有一个矩阵包括1
和0
下面的元素,用作网络邻接矩阵.
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
元素是矩阵元素之一而不是零.
使用此命令,axis([XMIN XMAX YMIN YMAX]
我们可以设置x轴和y轴的范围.
是否有任何方法可以缩放一个特定的绘图轴,而其他轴设置为自动缩放?
有没有办法使条件成为如果错误出现在语句/矩阵下的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) 鉴于矩阵: - 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)
我想以更简单的方式做到这一点,没有循环.
如何从命令行关闭以下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中使用向量形成矩阵:
给定是x
包含任意顺序的1和0 的向量,例如
x = [0 1 1 0 1];
Run Code Online (Sandbox Code Playgroud)
由此,我想形成一个矩阵Y
,描述如下:
Y
有m
行,其中m
是x
(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) 我正在尝试基于另一个数组对数组进行排序.我尝试使用索引返回的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
?
我在 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
,然后加载数据,然后将名称更改回来。
我也无法弄清楚如何从搜索路径中删除内置函数。
我正在尝试使用其中的三个情节来绘制图形subplot
.y轴为所有三条曲线是从同一-1
到1
而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中对符号多项式进行了部分分数分解,它给出了一个符号表达式,如下所示:
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)