小编Adr*_*aan的帖子

如何在满足某些条件的向量中返回元素?(没有'if')

我想A'=[1 0 3 0]'A=[1 10 3 100]'从下面的MATLAB代码

new_A=A(A<10)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

我需要做到这一点没有forif.

matlab vector vectorization

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

添加长度不同的数组

问题

有没有一种聪明的方法来添加不具有相同列长度的数组/向量,只需将零添加到太短的列中?我有包含多个变量的加法/减法.

以便:

a=[ 1; 2; 3]; b=[1;5]
a+b=[2; 5; 3]
Run Code Online (Sandbox Code Playgroud)

要么:

a-b=[0;-3;3]
Run Code Online (Sandbox Code Playgroud)

代替:

使用+ Matrix尺寸时出错必须同意.

我做了什么

 b(numel(a),1) = 0;
Run Code Online (Sandbox Code Playgroud)

如果添加一些变量,这样可以正常工作,但是在重复多个变量时会非常烦人,特别是如果您不知道哪个变量最长.因此,问题是否有更容易的快速方法来添加不同的列长度.

编辑

问题实际上是,如果有一种方法可以自动执行此操作,而不仅仅是"只需几个"变量.

arrays matlab add

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

在MATLAB中隐藏代码行

我想知道如果有可能以及如何在MATLAB中隐藏一行代码或整行代码.例如:

if a=b
   x=y+1; x=x^2;
end
Run Code Online (Sandbox Code Playgroud)

并且隐藏了x = x ^ 2,但仍然运行该过程.我的意思是:

if a=b
       x=y+1; 
end
Run Code Online (Sandbox Code Playgroud)

matlab

0
推荐指数
2
解决办法
1670
查看次数

如何将逗号分隔的双打从文本文件读入MATLAB?

我有一个名为Output.txt的文本文件,如下所示:

0.000000,0.550147,0.884956
1.000000,0.532486,0.847458
2.000000,0.501333,0.800000
3.000000,0.466418,0.746269
4.000000,0.409492,0.662252
5.000000,0.327257,0.520833
6.000000,0.267376,0.425532
7.000000,0.188427,0.296736
8.000000,0.115824,0.180505
9.000000,0.062768,0.099108
Run Code Online (Sandbox Code Playgroud)

我需要将用逗号分隔的三个值读入MATLAB中作为3个不同的向量.它们可以被称为什么,但C1,C2C3可以工作.

C1将包含[0.000000,1.000000,2.000000, ...],C2将包含[0.550147,0.532486,...]C3将包含在第三列中的值[0.884956,0.847458,...].

我尝试使用以下但我遇到问题让它正常工作:

File = 'Output.txt';
f = fopen(File, 'r');
C = textscan(f, '%f%f%f', 'Delimiter', ',');
fclose(f);
Run Code Online (Sandbox Code Playgroud)

这给了我1x3 Cell阵列,C但是每个单元格C都是1x100,并且不包含正确的数字.

csv matlab textscan

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

无法在MATLAB中求解不定积分

为了解决不确定的积分问题,我提出了一个与本书解决方案不一致的解决方案.为了检查我的解决方案,我尝试使用此代码解决问题:

syms x
question=int(1/(x*(1+x^5)^0.5))`   
mysolution=(1/5)*(log(((sqrt(1+x^5))-1)/(sqrt(1+x^5)+1)))
x=3  
eval(question)  
eval(mysolution)
Run Code Online (Sandbox Code Playgroud)

结果导致:

ans =-0.0256 - 0.6283i
ans =-0.0256
Run Code Online (Sandbox Code Playgroud)

我必须找到一个不定积分的解决方案但是当我给MATLAB这个问题(解决不定积分)时,它给了另一个解决方案.为了检查我的解决方案是否是正确的,我给x使用值3 symseval,所以MATLAB应该显示我的回答和他自己的答案与假设x=3.

MATLAB答案的真实部分与我的答案相同,但它包含一个虚构的部分,这与我的解决方案不符.事实上,我的答案x=3并不包含任何想象中的部分.有什么不对,为什么会这样?

matlab integral

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

如何更改if else切换案例

我现在有这个代码

s=[1 3 4 9 12 16 18 19 20 21];
for k=s   
    if k>2 & k<10
        a(k)=0;

    else if k>10 & k<20
          a(k)=1; 
        else a(k)=2;
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

我想用switch, case声明重写一下.我怎样才能做到这一点?

matlab if-statement switch-statement

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

带符号数学的矩阵给出了符号答案,而不是数字答案

考虑以下矩阵

Ja(t1, t2, t3, t4, t5, t6) =

[                                                                                                             (sin(t5)*(cos(t3)*cos(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)) - sin(t3)*sin(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1))))/5 - sin(t1)/100 - (219*sin(t1)*sin(t2))/1000 - (19*cos(t3)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/100 - (21*cos(t3)*cos(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/1000 + (21*sin(t3)*sin(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/1000, (219*cos(t1)*cos(t2))/1000 + (sin(t5)*(cos(t3)*cos(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)) - sin(t3)*sin(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1))))/5 - (19*cos(t3)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/100 - (21*cos(t3)*cos(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/1000 + (21*sin(t3)*sin(t4)*(cos(t1)*sin(t2) + cos(t2)*sin(t1)))/1000,                                                                                                             (sin(t5)*(cos(t3)*sin(t4)*(cos(t1)*cos(t2) - sin(t1)*sin(t2)) + cos(t4)*sin(t3)*(cos(t1)*cos(t2) - sin(t1)*sin(t2))))/5 - (19*sin(t3)*(cos(t1)*cos(t2) - sin(t1)*sin(t2)))/100 - (21*cos(t3)*sin(t4)*(cos(t1)*cos(t2) - sin(t1)*sin(t2)))/1000 - (21*cos(t4)*sin(t3)*(cos(t1)*cos(t2) - sin(t1)*sin(t2)))/1000,                                                                                 (sin(t5)*(cos(t3)*sin(t4)*(cos(t1)*cos(t2) - sin(t1)*sin(t2)) + cos(t4)*sin(t3)*(cos(t1)*cos(t2) - sin(t1)*sin(t2))))/5 - …
Run Code Online (Sandbox Code Playgroud)

math matlab matrix symbolic-math

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

如何使用MATLAB编辑文件夹中的多个.mat文件?

我正在尝试编辑名称中没有模式的文件夹中的100个.mat文件.每个文件都包含大小的矩阵100 -by- 10,我想将它们转换为10 -by- 10 -by- 10.我该怎么做?

file-io matlab matrix

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

按位组合作为整数到枚举

目前我正在尝试解析一个整数,该整数是来自第三方 API 的枚举的按位组合。例如:我收到一个integer值,1035该值包含三个枚举值;

enum Status
    1= "Status 1" 
    2= "Status 2" 
    4= "Status 3" 
    8= "Status 4" 
    ........ 
    1024= "Status 8"
end enum
Run Code Online (Sandbox Code Playgroud)

所以我需要一个将值转换1035为的函数Status 1 + Status 2 + Status 4 + Status 8

尝试将其转换为位,然后使用位移位,但这并没有给我正确的结果...希望有人可以在 C# 或 vb.net 示例中帮助我。

c# vb.net math logic bit

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

矩阵乘法和差异

我需要用MATLAB计算这个等式:

在此输入图像描述

哪里Sn可以是矩阵或标量,我试图用它

S_A = S_3*S_5*((ones-(S_1*S_5)).^(-1))*S_2+S_4
Run Code Online (Sandbox Code Playgroud)

问题是它没有给我正确的结果和它似乎与差异的问题 在此输入图像描述 但我无法理解为什么给我错误的结果.

结果应该是这个

在此输入图像描述

但是MATLAB的结果是

在此输入图像描述

我不明白为什么这两个结果不一样.我想到的唯一方法是通过这个

diff = ones-(S_1*S_5);
if S_1*S_5 == zeros         %Perchè senza non funziona?
    diff = ones;
else 
    diff = (ones-(S_1*S_5)).^(-1)
end
S_A = S_3*S_5*diff*S_2+S_4;
Run Code Online (Sandbox Code Playgroud)

但我不认为这是一个聪明的解决方案.谁知道为什么我没有得到正确的结果?

matlab matrix matrix-multiplication

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