我想A'=[1 0 3 0]'从A=[1 10 3 100]'从下面的MATLAB代码
new_A=A(A<10)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我需要做到这一点没有for或if.
问题
有没有一种聪明的方法来添加不具有相同列长度的数组/向量,只需将零添加到太短的列中?我有包含多个变量的加法/减法.
以便:
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)
如果添加一些变量,这样可以正常工作,但是在重复多个变量时会非常烦人,特别是如果您不知道哪个变量最长.因此,问题是否有更容易的快速方法来添加不同的列长度.
编辑
问题实际上是,如果有一种方法可以自动执行此操作,而不仅仅是"只需几个"变量.
我想知道如果有可能以及如何在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) 我有一个名为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,C2和C3可以工作.
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,并且不包含正确的数字.
为了解决不确定的积分问题,我提出了一个与本书解决方案不一致的解决方案.为了检查我的解决方案,我尝试使用此代码解决问题:
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 syms和eval,所以MATLAB应该显示我的回答和他自己的答案与假设x=3.
MATLAB答案的真实部分与我的答案相同,但它包含一个虚构的部分,这与我的解决方案不符.事实上,我的答案x=3并不包含任何想象中的部分.有什么不对,为什么会这样?
我现在有这个代码
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声明重写一下.我怎样才能做到这一点?
考虑以下矩阵
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) 我正在尝试编辑名称中没有模式的文件夹中的100个.mat文件.每个文件都包含大小的矩阵100 -by- 10,我想将它们转换为10 -by- 10 -by- 10.我该怎么做?
目前我正在尝试解析一个整数,该整数是来自第三方 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 示例中帮助我。
我需要用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)
但我不认为这是一个聪明的解决方案.谁知道为什么我没有得到正确的结果?